正则表达式形式{m,n}不使用上限

Tha*_*Tyl 1 javascript regex

我的理解是regexp表单最多a{m,n}匹配an次.但是,以下代码段无法正常工作(这是javascript):

/\{{2,2}/.exec ('df{{{df')
// [ '{{', index: 2, input: 'df{{{df' ]
Run Code Online (Sandbox Code Playgroud)

它不应该返回null吗?

age*_*t-j 5

它与文本匹配,因为有两个.这满足了你的正则表达式指定的要求.如果你想阻止额外的匹配使用否定前瞻:(?!\{).

(?:^|[^{])(\{{2,2}(?!\{))
Run Code Online (Sandbox Code Playgroud)

然后,使用第一个捕获的组.

编辑,顺便说一句,在对,2{2,2}在这种情况下可选的,因为它是相同的号码.

编辑:添加用法示例以摆脱第一个匹配的字符.(Javascript不支持负面的lookbehind.

var myRegexp = /(?:^|[^{])(\{{2,2}(?!\{))/g;
var match = myRegexp.exec(myString);
alert(match[1]);
Run Code Online (Sandbox Code Playgroud)