我正在尝试编写一些表单验证,我需要其中一个输入为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
谁能帮助我吗?谢谢!
答案 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