我正在尝试编写一个将数字456725
与456744
(最后2位数字,25-44)相匹配的正则表达式,但似乎无法找到正确的regex格式。我尝试过^(4567[2-4][0-9])
,但使用它也与456745
相匹配,这是不应该的。
发布于 2017-06-06 16:07:33
如果您像^(4567[2-4][0-9])
一样这样做,您将允许在[2-4]
之间的范围内的任何数字,以及在[0-9]
之间的范围内的任何数字,这显然不是您想要的。
因此,您需要更改如下:^4567(?:2[5-9]|3[0-9]|4[0-4])
解释
^
断言字符串开始处的位置
4567
与字符4567匹配
非捕获群 (?:2[5-9]|3[0-9]|4[0-4])
1 Alternative 2[5-9]
2
与字符2匹配。
匹配列表[5-9]
中的单个字符
2 Alternative 3[0-9]
3
与字符3匹配。
匹配列表[0-9]
中的单个字符
3 Alternative 4[0-4]
4
与字符4匹配。
匹配列表[0-4]
中的单个字符
您可以使用页面regex101来了解更多内容,并阅读关于该主题的良好解释。希望能帮上忙。
发布于 2017-06-06 16:07:41
如果您的变量只是一个整数,那么最好将其作为一个整数进行比较。
对于regex though..the ^(4567
是正确的,您的问题是[2-4]
和[0-9]
,它们是相互独立的。您需要将这些部分放在一起,以便只允许25-29
和40-44
。
这应该会让你走上正确的轨道:
^(4567(?:2[5-9]|3[0-9]|4[0-4]))$
https://stackoverflow.com/questions/44394464
复制相似问题