我有一个正则表达式问题,我试图忽略数字'41',我想要4,1,14等所有匹配。
我有[^\b41\b]
这实际上是我想要的,但这也忽略了值1和4的所有单次迭代。
例如,这匹配“41”,但我希望它不匹配: \ B41 \ B'/ P>
答案 0 :(得分:5)
答案 1 :(得分:1)
您可以使用否定look-ahead assertion排除41
:
/\b(?!41\b)\d+\b/
此正则表达式应解释为:在任何单词边界\b
,如果未跟41\b
((?!41\b)
),则匹配一个或多个后跟的数字一个词边界。
或与否定look-behind assertion相同:
/\b\d+\b(?<!\b41)/
此正则表达式将被解释为:匹配由单词边界包围的一个或多个数字,但前提是匹配结尾的子字符串前面没有\b41
((?<!\b41)
)。
或者甚至可以使用基本语法:
/\b(\d|[0-35-9]\d|\d[02-9]|\d{3,})\b/
这仅匹配由以下两者的字边界包围的数字序列:
4
或在第二个位置没有1
答案 2 :(得分:1)
这类似于问题“Regular expression that doesn’t contain certain string”,所以我会从那里重复我的回答:
^((?!41).)*$
这适用于任意字符串,而不仅仅是41.请参阅my response there获取解释。