我正在尝试编写一个将数字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
复制相似问题