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

标签 javascript regex

我的理解是正则表达式形式 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/

相关文章:

php - 根据另一个下拉列表中的所选值限制日期

javascript - CSS\JS\JQuery : Customize color of clicked (not chosen) option in multiselect box

c# - 正则表达式匹配一系列不在单词中的字母

python - 在 Python 中通过正则表达式分解 CSV

javascript - AngularJS 1.0 和 1.2 之间 $interpolate 的差异

javascript - 如何通过 Django 中的确认弹出窗口创建“删除数据库中的项目”?

javascript - 如何在指令定义期间正确地将新指令添加到指令

数据库 vs 平面文件,对于 "regex"匹配许多同时请求,这是一种更快的结构

Java正则表达式以and开头和结尾

javascript - 正则表达式在字符串 javascript 中的每个匹配项后添加文本