我有以下字符串:
var string = "'abc'+@VAL([Q].[F1 w1 w1 w1])+ 'hellllllllllo'+@VAL([Q].[F2 w]) +'anything'+@VAL([Q].[F3 w])+anything";
我想匹配以下模式
@VAL([Q].[F1 w1 w1 w1])
@VAL([Q].[F2 w])
@VAL([Q].[F3 w])
实际上我想将字符串模式开头与 @VAL(,以结尾)匹配 我尝试过以下代码:
var patt1 = /@VAL\((.*)\)/g;
var myPattern = string.match(patt1);
并获得以下结果
@VAL([Q].[F1 w1 w1 w1])+ 'hellllllllllo'+@VAL([Q].[F2 w]) +'anything'+@VAL([Q].[F3 w])
我无法解决它需要帮助!!!!!!!!!
答案 0 :(得分:1)
这将返回所有匹配项:
result = subject.match(/@VAL\([^)]*\)/g);
请参阅demo。
@VAL\(
匹配@VAL(
[^)]
匹配一个不是)
... *
量词重复零次或多次*\)
匹配右括号答案 1 :(得分:0)
你的正则表达式太贪心了,请使用基于否定的正则表达式:
var patt1 = /@VAL\(([^)]*)\)/g;
或者只是让它变得懒惰:
var patt1 = /@VAL\((.*?)\)/g;
var m = string.match(patt1);
//=> ["@VAL([Q].[F1 w1 w1 w1])", "@VAL([Q].[F2 w])", "@VAL([Q].[F3 w])"]