0

我有这个正则表达式模式:

rxp = /\[!lang=([^}]+)\]/g

这看起来像这样:

[!lang=javascript]
var foo = 'bar';

并正确返回["javascript"]

var found = [], rxp = /\[!lang=([^}]+)\]/g, curMatch;
while( curMatch = rxp.exec( myCodeStringAbove) ) {
  found.push( curMatch[1] );
}

// found === ['javascript']

如果我以后有括号:

[!lang=javascript]
var foo = 'bar';
var fubar = [];

它吓坏了并返回:

["javascript] var foo = 'bar'; var fubar = ["]

我需要的

我需要修改我的正则表达式模式,以便即使后面有括号,它也是贪婪的,并且在第一个括号处停止,如上面的第一个示例所示。我该怎么做呢?

4

2 回答 2

2

您的角色类中有错误。您禁止使用右大括号而不是方大括号:

rxp = /\[!lang=([^\]]+)]/g
于 2013-10-26T18:46:02.197 回答
1

一种方法是通过在其后 添加来强制贪婪运算符+变得懒惰?

/\[!lang=(.+?)\]/g

正则表达式101演示

于 2013-10-26T18:47:14.787 回答