我的理解是正则表达式形式 a{m,n}
最多匹配 a
n 次。但是,以下代码片段并不像我预期的那样工作(这是 javascript):
/\{{2,2}/.exec ('df{{{df')
// [ '{{', index: 2, input: 'df{{{df' ]
它不应该返回null吗?
最佳答案
它匹配文本,因为有两个。这满足您的正则表达式指定的要求。如果你想阻止额外的匹配,请使用否定前瞻:(?!\{)
。
(?:^|[^{])(\{{2,2}(?!\{))
然后,使用第一个捕获的组。
顺便说一下,在这种情况下,{2,2}
中的 ,2
是可选的,因为它是相同的数字。
编辑:添加了用法示例以摆脱第一个匹配的字符。 (Javascript 不支持负向回顾。
var myRegexp = /(?:^|[^{])(\{{2,2}(?!\{))/g;
var match = myRegexp.exec(myString);
alert(match[1]);
关于javascript - 正则表达式形式 {m,n} 不使用上限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6461453/