Regex验证编号范围



我需要用regex验证字符串输入,规则是:

  • 字符串的数字不应小于2且不应大于9999(2-9999)
  • 字符串在数字之前不应该有零(例如:编号000200222022)

我真的需要通过regex来实现这一点,所以任何其他解决方案都是不可接受的。

试试这个:

/^[2-9]|[1-9][0-9]{1,3}$/

要实现第一个条件

  • 字符串的数字不应小于2且不应大于9999(2-9999)

有两种情况:

  1. 个位数:[2-9]这是一个介于2和9之间的单个字符
  2. 多位数:[1-9][0-9]{1,3}这是一个两位三位四位的数字,所有数字都在19范围内

注意1:{1,3}限制第二个字符类只能接受一个、两个或三个数字。

注2:^表示字符串的开始,$表示字符串的结束。

顺便说一下,您的第二个条件根本没有在上面的模式中定义(我的意思是,它与0的任何恒星数都不匹配,所以一切都好。)

试试这个

^(?!0|1$)d{1,4}$

Regex演示

解释:
^d{1,4}$:匹配0-9999
(?!0)...:数字前没有零(例如:编号000200222022)
(?!1$)...:不能小于2(==1)
(?!…):负前瞻性样本
d:从0到9的一位样本
^:字符串的起始或行的起始取决于多行模式
$:取决于多行模式的字符串结束或行结束

最新更新