Javascript 正则表达式,以匹配包含除某些字符串以外的某些字符串的模式
我有如下字符串:Javascript 正则表达式,以匹配包含除某些字符串以外的某些字符串的模式,javascript,jquery,regex,html,Javascript,Jquery,Regex,Html,我有如下字符串: 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 patt
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])
我无法解决它需要帮助 您的正则表达式太贪婪,请使用基于否定的正则表达式:
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])"]
这将返回所有匹配项:
result = subject.match(/@VAL\([^)]*\)/g);
看
匹配@VAL\(
@VAL(
匹配一个非[^)]
)
- 而
量词会重复零次或多次*
匹配右括号*\)