正则表达式匹配范围编号介于13000到99999之间

时间:2018-01-03 02:30:43

标签: regex

我正在尝试编写一些表单验证,我需要其中一个输入为13000-99999。

(^[1-1][3-3]?[0-9]?[0-9]?[0-9]?$|^[0-9][0-9][0-9][0-9][0-9]$)

它不能按预期工作,它符合以下所有条件:

10   \\ matched but it should not 
10000   \\ matched but it should not 
12999
13000
20000
99999
谁能帮助我吗?谢谢!

2 个答案:

答案 0 :(得分:1)

虽然你这样做的方式并不理想。但是如果你正在使用这种方法,你的正则表达式需要一些改变:

(^[1-1][3-9][0-9][0-9][0-9]$|^[2-9][0-9][0-9][0-9][0-9]$)

这是因为如果第一个数字是1,那么第二个数字应该在3和9之间。如果第二个数字是2,那么0-9中的任何一个对第二个数字有效。最后三位数字始终为0-9范围。

答案 1 :(得分:1)

这里有多个问题

  

(^ [1-1] [3-3] [0-9] [0-9] [0-9] $ |????^ [0-9] [0-9] - [O- 9] [0-9] [0-9] $)

1 - 您必须删除所有问号?
2 - 在第一部分[3-3]中的第二个模式应来自[3-9]
3 - 在|之后的第二部分中,这应该来自[2-9]

您可以使用以下正则表达式之一(^[1-1][3-9][0-9][0-9][0-9]$|^[2-9][0-9][0-9][0-9][0-9]$)(^[1-1][3-9]|^[2-9][0-9])[0-9][0-9][0-9]$1[3-9]\d{3}|[2-9]\d{4}

首先,您需要匹配从1开始,从3开始到9或开始从2到9以及任何数字0到9的所有数字,所有剩余数字都可以从0到9