【发布时间】:2011-01-28 08:43:31
【问题描述】:
我正在尝试使用这个正则表达式(JS):
/\/\*(.*)\*\//g
替换
/*
sdandsads
*/
一无所有。
但它不起作用!为什么? o_O
【问题讨论】:
标签: javascript regex
我正在尝试使用这个正则表达式(JS):
/\/\*(.*)\*\//g
替换
/*
sdandsads
*/
一无所有。
但它不起作用!为什么? o_O
【问题讨论】:
标签: javascript regex
点捕获除换行符以外的所有内容..(如果点为假)
所以要么使用dotall(在其他答案/cmets中提到,这在javascript中不受支持,但我将其留在这里以供参考)
/\/\*(.*)\*\//gs
或在您的表达式中添加空格字符\s
/\/\*((\s|.)*?)\*\//g
艾伦在他的评论中提到我给出的答案表现不佳,因此请改用以下内容..(翻译为所有空格和所有非空格,所以所有内容..)
/\/\*([\s\S]*?)\*\//g
【讨论】:
s(单行)模式,(\s|.) 会导致灾难性的回溯。在 JS 中匹配任何内容(包括换行符)的标准方法是 [\S\s]。
\s|. 回溯的任何链接?想了解更多。
两个问题:
[^]。解决方案:
/\/\*[^]*?\*\//g
例子:
> '/*abc\ncde*/qqq/*iop\n\njj*/'.replace(/\/\*[^]*?\*\//g, '')
qqq
【讨论】:
/\/\*[^]*?\*+\//g。在\* 之后缺少+。也可以这样解决:/\/\*.+?\*+\//gs。 JS 现在支持正则表达式中的s 标志,允许. 匹配换行符。非常感谢。