如何在JavaScript中使用正则表达式从字符串中删除类似的内容?
/*
multi-line comment
*/
这是我尝试过的:
var regex = /(\/\*(^\*\/)*\*\/)/g;
string = string.replace(regex, '');
如果要匹配/*
后跟任意数量的不包含*/
,后跟的文本*/
,则可以使用正则表达式,但是它不能正确地从JavaScript中删除块注释。
我描述的模式失败的一个简单示例是:
var a = '/*'; /* block comment */
请注意,/*
即使第一个字符串包含在字符串中,也将被匹配。如果可以保证所搜索的内容不包含此类不一致之处,或者仅使用正则表达式查找进行手动更改的位置,那么您应该相当安全。否则,请不要使用正则表达式,因为在这种情况下,它们是该工作的错误工具。您已被警告。
要构建正则表达式,您只需将我的第一句话分解成它的复合部分。
/
启动正则表达式文字\/\*
匹配文字字符 /*
[\s\S]*?
以非贪婪方式匹配任何字符\*\/
匹配文字字符 */
/
结束正则表达式最终,您在一起:
/\/\*[\s\S]*?\*\//
*/
当文件中有多个块注释时,非贪婪匹配是必要的,以防止捕获接近的注释():
/* foo */
var foo = 'bar';
/* fizz */
var fizz = 'buzz';
通过非贪婪匹配,
/* foo */
和
/* fizz */
如果没有非贪婪匹配,将被匹配,
/* foo */
var foo = 'bar';
/* fizz */
将被匹配。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句