如何解决正则表达式形式{m,n}不使用上限
| 我的理解是,正则表达式格式“ 0”最多匹配n个“ 1”。但是,以下代码段无法正常运行(这是javascript):/\\{{2,2}/.exec (\'df{{{df\')
// [ \'{{\',index: 2,input: \'df{{{df\' ]
它不应该返回null吗?
解决方法
它与文本匹配,因为有两个。满足您的正则表达式指定的要求。如果要防止多余项匹配,请使用负前瞻:
(?!\\{)
。
(?:^|[^{])(\\{{2,2}(?!\\{))
然后,使用第一个捕获的组。
顺便说一下,在这种情况下,请编辑ѭ6中的,2
,因为它是相同的数字。
编辑:添加了用法示例以摆脱第一个匹配的字符。 (JavaScript不支持负向后看。
var myRegexp = /(?:^|[^{])(\\{{2,2}(?!\\{))/g;
var match = myRegexp.exec(myString);
alert(match[1]);
, 表达式指出的内容是在字符串中的任意位置找到{{
。如果您只想查找{{
而不能找到{{{
,则需要指定要查找的内容:
/[^{]\\{{2,2}[^{]/
用英语:
[没有一个{
的任何字符],然后是[正好是两个{
],然后是[没有一个ѭ12的任何字符]
这将匹配a{{b
但不匹配match16ѭ和a{{{{b
, 之所以匹配,是因为它包含一个带有恰好两个左花括号的子字符串。如果您希望它不匹配,则必须指定要查找的2个左括号以外的任何内容都不能为左括号。
, 该正则表达式正好寻找两个左弯括号({{
),它在索引2的字符串“ \19ѭ\”中找到(紧接在第一个“ df \”之后)。在我看来不错。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。