我有以下正则表达式:[\-+]?[0-9]*[02468]$
它匹配正偶数或负偶数,但我也希望它不匹配'0'。我怎样才能做到这一点?我找不到将“如果前面有数字,则仅将 0 匹配为最终数字”翻译成正则表达式语言的方法。
谢谢。
我有以下正则表达式:[\-+]?[0-9]*[02468]$
它匹配正偶数或负偶数,但我也希望它不匹配'0'。我怎样才能做到这一点?我找不到将“如果前面有数字,则仅将 0 匹配为最终数字”翻译成正则表达式语言的方法。
谢谢。
也许这个?
[\-+]?([0-9]*[1-9][0-9]*[02468]|[2468])$
编辑 这允许在两个交替中使用前导零。
[-+]?0*([1-9][0-9]*[02468]|[2468])$
我想出了以下,这似乎工作:[-+]?([1-9][0-9]*[24680]|[2468])$
它似乎避免了前导零并且不使用回溯。如果我错了,请纠正我。
这将消除以 0 开头的数字:
[\-+]?[^0][0-9]*[02468]$
所以它会排除0
.
缺点是它不起作用012
。
因此,只要您的数字没有前导零,它就可能是一个解决方案。
不过,我不明白这里需要正则表达式(你从不指定上下文)。
最好(如果可能的话)检查数字是否非零甚至:
( num != 0 && num % 2 == 0 )