只有数字组成的字符串输入,即整数。如何编写一个接受除数字1,2和25之外的所有数字的正则表达式?
我想在BeanIO的record identification(支持正则表达式)中使用它来跳过一些具有特定值的记录。
我达到了这一点^(1|2|25)$
,但我想要与此相符的相反。
答案 0 :(得分:10)
不是说正则表达式是最好的工具,但如果你坚持......
使用否定前瞻:
/^(?!(?:1|2|25)$)\d+/
在此处查看:[{3}}
答案 1 :(得分:2)
你可以使用这样的模式:
^([03-9]\d*|1\d+|2[0-46-9]\d*|25\d+)$
或者如果您的正则表达式引擎支持它,您可以使用负面前瞻断言((?!…)
),如下所示:
^(?!1$|25?$)\d+$
但是,您可能最好只是解析代码中的数字并确保它不等于禁止值之一。
答案 2 :(得分:1)
(?!^1$|^2$|^25$)(^\d+$)
这适用于您的情况。
答案 3 :(得分:0)
See this related question on stackoverflow
您不应该尝试编写这样的正则表达式,因为大多数语言都不支持正则表达式的补充。
相反,你应该做的是写一个只匹配这三件事的正则表达式:^(1|2|25)$
- 然后在你的代码中你应该检查这个正则表达式是否匹配\d+
并且不能匹配其他一,例如:
`if($myStr =~ m/\d+/ && !($myStr =~ m/^(1|2|25)$/))`