正则表达式:匹配不包含 [ 字符的字符串行

3
另一个我自己无法解决的正则表达式问题:
我有一个包含以下内容的JavaScript文件:
var myApp = new App();
function ExplicitFunction ( one, two, three ) {
}

/** This line should match from .add ("ModuleA", ExplicitFunction ) { */
myApp.add ("ModuleA", ExplicitFunction ) {
}

/** This line should not match at all because of [ character after "ModuleB",  */
myApp.add ("ModuleB", ["p1", "p2", function (p1, p2) {
}]);


/** This line should match from .add ("ModuleC", function(paramA, paramB) { */
myApp.add ("ModuleC", function(paramA, paramB) {
});

根据上述代码,我想编写一个正则表达式,以查找文件中不遵循此编码约定的代码; 请注意数组参数
.add ("Some String Here", [ anything here string or function ]);

基本上,正如文件中的注释所描述的那样。
myApp.add ("ModuleB", ["p1", "p2", function (p1, p2) {
}]);

不应该匹配,因为它遵循上述编码约定。
而调用 myApp.add 的其他行应该匹配,因为它们不遵循这个约定。
我尝试了以下方法:
\.add\s*\({1}.*[^\[]\w*

在这里查看演示

但它选择了.add字符串中的所有内容。 有人可以指点我正确的方向吗?提前感谢!
2个回答

2

这个正则表达式应该有效:

\.add *\([^,]+, +[^[][^{]*{$

使用 gm 标志。

演示


1
像这样的东西可能有效:

\.add\s*\([^\[\n]*{$

.add,然后可能有空白,然后是(,接着是不是[或换行符的内容,最后是一个{来结束该行。

这一切都使用\m开关来实现,使得$匹配行尾。

当然,它可以进行改进和定制以适应您的需求,但这可能是一个很好的开始。


感谢回复,这看起来很好,直到我将{移到下一行。因为它非常接近,所以加1。 - s4m0k

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接