如何在 JavaScript 中使用正则表达式从字符串中删除类似这样的内容?
/*
multi-line comment
*/
这是我试过的:
var regex = /(\/\*(^\*\/)*\*\/)/g;
string = string.replace(regex, '');
最佳答案
如果您想匹配 /*
后跟任意数量的不包含 */
的文本,然后是 */
,那么您可以使用正则表达式,但是它不会正确地从 JavaScript 中删除 block 注释。
我描述的模式失败的一个简单示例是:
var a = '/*'; /* block comment */
请注意,第一个 /*
将被匹配,即使它包含在字符串中。如果你能保证你正在搜索的内容不包含这种不一致,或者只是使用正则表达式来寻找进行手动更改的地方,那么你应该是相当安全的。否则,不要使用正则表达式,因为在这种情况下它们是错误的工具; 您已收到警告。
要构建正则表达式,您只需将我的第一句话分解成多个复合部分即可。
/
开始正则表达式字面量\/\*
匹配文字字符/*
[\s\S]*?
以非贪婪方式匹配任何字符\*\/
匹配文字字符*/
/
结束正则表达式
你最终得到的是:
/\/\*[\s\S]*?\*\//
当文件中有多个 block 注释时,非贪婪匹配是必要的,以防止捕获关闭注释 (*/
):
/* foo */
var foo = 'bar';
/* fizz */
var fizz = 'buzz';
通过非贪婪匹配,
/* foo */
和
/* fizz */
会被匹配,没有非贪婪匹配,
/* foo */
var foo = 'bar';
/* fizz */
会匹配。
关于javascript - 用于删除 js 中的/**/注释的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22722783/