(1) // foo boo n(a){...} (2) foo boo n(b){...}
是否有匹配来自
n(.){...}的第2行的正则表达式,但跳过以//开头的行。
在javascript中不存在负面看法背后
答案 0 :(得分:1)
您需要匹配行开头的文字,验证它不会以//
开头。
<强>正则表达式强>
/^(?!\s*[/][/]).* (n[(].*?})/m
^(?!\s*[/][/])
使用行前缀的negative lookahead来检查后面没有空格和//
。.*
消耗必要的字符。(n[(].*?})
在第1组中捕获n( ... }
。<强>代码强>
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代码,则无法使用正则表达式解析它。