Regex验证数字范围

noj0wjuj  于 2023-06-30  发布在  其他
关注(0)|答案(2)|浏览(128)

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

  • 字符串不应小于2且不大于9999(2-9999)
  • 字符串的数字前不应有零(例如:编号0002、0022、0222)

我真的需要通过正则表达式来完成这一点,所以任何其他解决方案都是不可接受的。

nue99wik

nue99wik1#

试试这个:

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

实现您的第一个条件

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

有两种情况:
1.个位数:[2-9]这是一个范围在2到9之间的单个字符。
1.多位数:[1-9][0-9]{1,3}这是一个2 - 3 - 4位数,所有数字都在19范围内。

注1:{1,3}限制第二个字符类只能接受一位、两位或三位数字。
注2:^表示字符串开始,$表示字符串结束。

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

aiqt4smr

aiqt4smr2#

试试这个

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

Regex demo

说明:

^\d{1,4}$:匹配0-9999
(?!0)...:数字前不能有零(例如:编号0002、0022、0222)
(?!1$)...:不小于2(==1)
(?!…):负先行sample
\d:从0到9的一位数sample
^:字符串或行的开头,具体取决于多行模式
$:字符串结束或行结束,具体取决于多行模式

相关问题