正则表达式匹配偶数,非零数字

时间:2012-07-20 19:47:20

标签: regex xsd pattern-matching

我有以下正则表达式:[\-+]?[0-9]*[02468]$ 它匹配正数或负数偶数,但我也希望它不匹配'0'。我怎么能做到这一点?我找不到一种方法来翻译“只有匹配0作为最后的数字,如果有数字在它之前”到正则表达式语言。

感谢。

3 个答案:

答案 0 :(得分:2)

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

修改 这允许在两个交替上都有前导零。

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

因此它会排除0

缺点是它不适用于012

只要您的号码没有前导零,就可以成为解决方案。


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

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

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