我需要用regex验证字符串输入,规则是:
- 字符串的数字不应小于2且不应大于9999(2-9999)
- 字符串在数字之前不应该有零(例如:编号000200222022)
我真的需要通过regex来实现这一点,所以任何其他解决方案都是不可接受的。
试试这个:
/^[2-9]|[1-9][0-9]{1,3}$/
要实现第一个条件:
- 字符串的数字不应小于2且不应大于9999(2-9999)
有两种情况:
- 个位数:
[2-9]
这是一个介于2和9之间的单个字符 - 多位数:
[1-9][0-9]{1,3}
这是一个两位三位四位的数字,所有数字都在1
和9
范围内
注意1:{1,3}
限制第二个字符类只能接受一个、两个或三个数字。
注2:^
表示字符串的开始,$
表示字符串的结束。
顺便说一下,您的第二个条件根本没有在上面的模式中定义(我的意思是,它与0
的任何恒星数都不匹配,所以一切都好。)
试试这个
^(?!0|1$)d{1,4}$
Regex演示
解释:^d{1,4}$
:匹配0-9999(?!0)...
:数字前没有零(例如:编号000200222022)(?!1$)...
:不能小于2(==1)(?!…)
:负前瞻性样本d
:从0到9的一位样本^
:字符串的起始或行的起始取决于多行模式$
:取决于多行模式的字符串结束或行结束