2

我有以下正则表达式:[\-+]?[0-9]*[02468]$ 它匹配正偶数或负偶数,但我也希望它不匹配'0'。我怎样才能做到这一点?我找不到将“如果前面有数字,则仅将 0 匹配为最终数字”翻译成正则表达式语言的方法。

谢谢。

4

3 回答 3

2

也许这个? [\-+]?([0-9]*[1-9][0-9]*[02468]|[2468])$

编辑 这允许在两个交替中使用前导零。

[-+]?0*([1-9][0-9]*[02468]|[2468])$

于 2012-07-20T19:50:59.313 回答
0

我想出了以下,这似乎工作:[-+]?([1-9][0-9]*[24680]|[2468])$

它似乎避免了前导零并且不使用回溯。如果我错了,请纠正我。

于 2012-07-20T19:51:23.257 回答
0

这将消除以 0 开头的数字:

[\-+]?[^0][0-9]*[02468]$

所以它会排除0.

缺点是它不起作用012

因此,只要您的数字没有前导零,它就可能是一个解决方案。


不过,我不明白这里需要正则表达式(你从不指定上下文)。

最好(如果可能的话)检查数字是否非零甚至:

( num != 0 && num % 2 == 0 )

于 2012-07-20T19:51:26.597 回答