正则表达式仅匹配奇数或偶数

时间:2009-03-27 21:29:32

标签: regex

我有一个用户可以输入数据库的文本条目列表,我需要使用正则表达式验证这些输入,因为其中一些是复杂的。其中一个字段必须有数字间隙(即10,12,14,16 ......)。我的问题是,是否有一个Regex结构允许我只匹配偶数或奇数运行?我知道我可以将这个值拉出来并对它进行除法检查,但如果可能的话,我希望有一个纯正的Regex解决方案。

[编辑]

我最终使用的解决方案是JaredPar的改编,因为除了只需要奇数或平均值之外,我还需要约束一个范围(即10-40之间的所有偶数)。下面是Regex。

^ [123] [02468] $

3 个答案:

答案 0 :(得分:60)

奇数

"^\d*[13579]$"

偶数

"^\d*[02468]$"

使用a和潜在的空白分隔符运行赔率

"$\s*(\d*[13579]\s*,\s*)*\d*[13579]$"

使用a和潜在的空白分隔符运行Evens

"$\s*(\d*[02468]\s*,\s*)*\d*[02468]$"

答案 1 :(得分:5)

正则表达式实际上并不难设计,如果你考虑到只需要查看最后一位数字就可以测试偶数或奇数,这也需要是偶数或奇数。所以奇数运行的正则表达式可以是:

"^(\s*\d*[13579]\s*,)*(\s*\d*[13579]\s*)$"

用[02468]替换[135]]偶数...

答案 2 :(得分:2)

你的意思是:

/(\d*[02468](, *\d*[02468]))|(\d*[13579](, *\d*[13579]))/

或您提出的问题的其他三种可能的解释之一?