Regex 仅匹配奇数或偶数的正则表达式
我有一个用户可以输入数据库的文本条目列表,我需要用正则表达式验证这些输入,因为其中有些输入很复杂。其中一个字段的数字必须有间隙(即10、12、14、16…)。我的问题是,是否有一个正则表达式构造允许我只匹配偶数或奇数的运行?我知道我可以提取这个值并对其进行除法检查,但我希望如果可能的话,可以得到一个纯正则表达式的解决方案 [编辑] 我最终使用的解决方案是对JaredPar的一种改编,因为除了只需要奇数或偶数之外,我还需要限制一个范围(即,所有偶数都在10-40之间)。下面是完成的正则表达式 ^[123][02468]$奇数Regex 仅匹配奇数或偶数的正则表达式,regex,Regex,我有一个用户可以输入数据库的文本条目列表,我需要用正则表达式验证这些输入,因为其中有些输入很复杂。其中一个字段的数字必须有间隙(即10、12、14、16…)。我的问题是,是否有一个正则表达式构造允许我只匹配偶数或奇数的运行?我知道我可以提取这个值并对其进行除法检查,但我希望如果可能的话,可以得到一个纯正则表达式的解决方案 [编辑] 我最终使用的解决方案是对JaredPar的一种改编,因为除了只需要奇数或偶数之外,我还需要限制一个范围(即,所有偶数都在10-40之间)。下面是完成的正则表达式 ^[
"^\d*[13579]$"
偶数
"^\d*[02468]$"
使用、和潜在的空格分隔符的可能性
"$\s*(\d*[13579]\s*,\s*)*\d*[13579]$"
"$\s*(\d*[02468]\s*,\s*)*\d*[02468]$"
使用、和可能的空格分隔符运行even
"$\s*(\d*[13579]\s*,\s*)*\d*[13579]$"
"$\s*(\d*[02468]\s*,\s*)*\d*[02468]$"
你是说:
/(\d*[02468](, *\d*[02468]))|(\d*[13579](, *\d*[13579]))/
或者你的问题的其他三种可能的解释中的一种?如果你考虑到一个偶数或奇数只需要看最后一个数字就可以测试,那么正则表达式实际上并不难设计。因此奇数运行的正则表达式可以是:
"^(\s*\d*[13579]\s*,)*(\s*\d*[13579]\s*)$"
对于偶数,用[02468]替换[13579]。我认为您还需要在每个组中的第二个子组上加星号,不是吗?您的正则表达式中的{1}可能完全没有必要,尽管您的正则表达式引擎可能与我的不同。该正则表达式将匹配最多48个数字。如果你想把它限制在40,你需要这个:^[123][02468]| 40$,克里斯是对的:{1}在正则表达式中是纯粹的噪音,不管你使用的是哪种正则表达式味道。谢谢,我已经在上面调整了我的正则表达式。你真的是一个非常聪明的解决方案