javascript - 用于删除 js 中的/**/注释的正则表达式

标签 javascript regex

如何在 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/

相关文章:

ruby - 在 '/' 或字符串结尾之前捕获任意字符串

javascript - 查找对象中的 2 个最高值 - Javascript

javascript - 由于未知原因,Dialogflow 代理不会在函数内说话

javascript - 让 DOM 知道动态创建的项目

regex - 什么时候我们需要使用非捕获组?

Java - 如何编写包含给定集合变量析取的正则表达式

javascript - 数组中元素的奇数个

javascript - 使用 Cloud Code javascript 和 iOS Parse SDK 编辑用户

regex - 根据文件名中的时间戳值复制文件

java - 正则表达式匹配android java中的数字