【问题标题】:JavaScript RegEx for Java Comments用于 Java 注释的 JavaScript 正则表达式
【发布时间】:2018-07-08 21:08:32
【问题描述】:
  1. 我正在尝试捕获以 /* 开头并以 */ 结尾的字符串/行,基本上这是 java 中的 cmets。

类似

/* Line 1 
 * Line 2
 * Line 3
 */

这是我目前拥有的,这是部分工作

(\/*\/|\*.*)
  1. 想要捕获以<!-- 开头并以--> 结尾的字符串

<!-- line 1 -->

我试过了

 var comments = /(<!--.*-->)/gm;

但它不起作用,因为我有另一个用于

的正则表达式
 var symb = /(<|>)/gi;
 $(this).text().replace(symb,"<span class='blue'>$1</span>")

【问题讨论】:

  • 你的第二个例子怎么不适合你?
  • 如果 cmets 在 " " 标记内会发生什么?
  • // This is a one line comment /* Still a one line comment
  • 只是好奇谁给了 -1 ?如果您想做出贡献,请像“CertainPerformance”一样提供帮助。

标签: javascript java regex


【解决方案1】:

要将/* 捕获到*/,您可以尝试以下操作:

const re = /\/\*([\s\S](?!\*\/))+[\s\S]\*\//;
const str = `
noncomment
/* Line 1
 * Line 2
 * Line 3
 */
noncomment
`;
console.log(str.match(re)[0]);

同样的模式适用于 HTML cmets:

const re = /<!--([\s\S](?!-->))+[\s\S]-->/;
const str = `
noncomment
<!-- Line 1
  Line 2
  Line 3
 -->
noncomment
`;
console.log(str.match(re)[0]);

【讨论】:

  • 非常感谢您的朋友,它工作得很好!但是第二个失败的问题是,因为 包围 ))+[\s \S]-->/;没有服用。有没有办法只选择
  • 您能否在您的问题中发布您正在使用的正则表达式失败的文本示例?
  • 听起来您应该将 HTML 注释测试器移到 symb 替换器上方。如果这不是一个选项,那么在 symb 替换器运行后发布 HTML 的样子
  • 假设这一行是 没有符号,你的代码 /))+[\ s\S]-->/ 将起作用。正如您建议的那样,我可以将评论测试器移到 symb 之上,但稍后 symb 将运行并且它会更改 :-) 对于评论测试器,我总是想以绿色显示文本,但 symb 正在改变 ,似乎没什么挑战性.
【解决方案2】:

一个更简单的模式,它使用[^] 作为伪“anything including newlines”标记,结合非贪婪量词:

const re = /\/\*[^]*?\*\//;
const str = `
noncomment
/**** Line 1
 * Line 2
 * Line 3
 ***/
noncomment
`;
console.log(str.match(re)[0]);

【讨论】:

    猜你喜欢
    • 2020-02-02
    • 2018-05-08
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 2013-02-19
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多