我有一个用户可以输入数据库的文本条目列表,我需要使用正则表达式验证这些输入,因为其中一些是复杂的。其中一个字段必须有数字间隙(即10,12,14,16 ......)。我的问题是,是否有一个Regex结构允许我只匹配偶数或奇数运行?我知道我可以将这个值拉出来并对它进行除法检查,但如果可能的话,我希望有一个纯正的Regex解决方案。
[编辑]
我最终使用的解决方案是JaredPar的改编,因为除了只需要奇数或平均值之外,我还需要约束一个范围(即10-40之间的所有偶数)。下面是Regex。
^ [123] [02468] $
答案 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]))/
或您提出的问题的其他三种可能的解释之一?