正则表达式javascript,从某个位置匹配并跳过包含注释块的行

时间:2015-10-15 02:41:28

标签: javascript regex

(1) // foo boo n(a){...}
(2)    foo boo n(b){...}

是否有匹配来自

n(.){...}
的第2行的正则表达式,但跳过以//开头的行。

在javascript中不存在负面看法背后

1 个答案:

答案 0 :(得分:1)

您需要匹配行开头的文字,验证它不会以//开头。

<强>正则表达式

/^(?!\s*[/][/]).* (n[(].*?})/m
  • ^(?!\s*[/][/])使用行前缀的negative lookahead来检查后面没有空格和//
  • .*消耗必要的字符。
  • (n[(].*?})在第1组中捕获n( ... }

regex101 demo

<强>代码

var regex = /^(?!\s*[\/][\/]).* (n[(].*?})/m; 
var text = '// foo boo n(a){...}\n    foo boo n(b){...}';
var m;
 
if ((m = regex.exec(text)) !== null) {
    document.write(m[1]);
}

这适用于提供的示例。但是,如果您尝试使用嵌套大括号解析javascript代码,则无法使用正则表达式解析它。