我有一个正则表达式问题,我试图忽略数字“41”,我希望 4、1、14 等全部匹配。
我得到了这[^\b41\b]
实际上是我想要的,但这也忽略了值 1 和 4 的所有单次迭代。
例如,这匹配“41”,但我希望它不匹配:\b41\b
我有一个正则表达式问题,我试图忽略数字“41”,我希望 4、1、14 等全部匹配。
我得到了这[^\b41\b]
实际上是我想要的,但这也忽略了值 1 和 4 的所有单次迭代。
例如,这匹配“41”,但我希望它不匹配:\b41\b
您可以使用否定的前瞻性断言来排除41
:
/\b(?!41\b)\d+\b/
此正则表达式将被解释为:在任何单词边界处\b
,如果它后面没有41\b
( (?!41\b)
),则匹配后面跟着单词边界的一个或多个数字。
或者与否定的后视断言相同:
/\b\d+\b(?<!\b41)/
此正则表达式将被解释为:匹配一个或多个由单词边界包围的数字,但前提是匹配末尾的子字符串前面没有\b41
( (?<!\b41)
)。
或者甚至可以只使用基本语法:
/\b(\d|[0-35-9]\d|\d[02-9]|\d{3,})\b/
这仅匹配由以下任一单词边界包围的数字序列:
4
第一个位置没有 a 或1
第二个位置没有 a 的两个数字