RegEx:匹配不包含[字符的字符串行]

时间:2014-03-26 09:28:09

标签: javascript regex substring

我自己无法解决的另一个RegEx问题:

我有这个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) {
});

根据上面的代码,我想写一个RegEx,它将从这个文件中找到那些不符合这种编码约定的代码; 请注意数组参数

.add ("Some String Here", [ anything here string or function ]);

所以基本上,正如文件中的注释/ ** * /所描述的那样

myApp.add ("ModuleB", ["p1", "p2", function (p1, p2) {
}]);

不应该匹配,因为它遵循上面描述的编码约定。

并且调用myApp.add的其他行应该匹配,因为它不符合约定。

我尝试了以下内容:

\.add\s*\({1}.*[^\[]\w*

Demo Here

但它从.add字符串中选择所有内容。

有人能指出我正确的方向吗?提前谢谢!

2 个答案:

答案 0 :(得分:2)

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

\.add *\([^,]+, +[^[][^{]*{$
带有gm标记的

Working Demo

答案 1 :(得分:1)

这样的事情可行:

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

.add,然后是可能的空格,然后是(,然后是非[或换行符,最后是{关闭该行的内容。

所有这一切都使用\m开关,使$匹配该行的结尾。

它当然可以根据您的需求进行改进和量身定制,但可能是一个良好的开端。