正则表达式匹配包含除某些字符串之外的某些字符串的模式

时间:2014-06-25 06:59:04

标签: javascript jquery html regex html5

我有以下字符串:

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])

我无法解决它需要帮助!!!!!!!!!

2 个答案:

答案 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])"]