正则表达式删除多行注释

时间:2010-03-16 23:01:39

标签: javascript regex

我正在尝试使用这个正则表达式(JS):

/\/\*(.*)\*\//g

替换

/*
sdandsads
*/
什么也没有。

但它不起作用!为什么? O_O

2 个答案:

答案 0 :(得分:13)

dot捕获除换行符之外的所有内容..(如果dotall为false

所以要么使用dotall(如其他答案/评论中所述,这在javascript中不受支持,但我会将其留在此处以供参考

/\/\*(.*)\*\//gs

或在表达式中添加空白字符\s

/\/\*((\s|.)*?)\*\//g

<击>

艾伦在他的评论中提到我给出的答案表现不好,所以请使用以下代码..(转换为所有空白和一切非空白,所以一切......

/\/\*([\s\S]*?)\*\//g

答案 1 :(得分:4)

两个问题:

  1. 在javascript中,没有dotall修饰符。您必须使用黑客来允许匹配换行符,例如使用[^]
  2. 你正在使用贪婪匹配。如果您的输入中有多个评论,那么它们之间的所有内容都将被吃掉。
  3. 解决方案:

    /\/\*[^]*?\*\//g
    

    示例:

    > '/*abc\ncde*/qqq/*iop\n\njj*/'.replace(/\/\*[^]*?\*\//g, '')
    qqq