正则表达式验证数字范围

时间:2016-04-15 02:20:12

标签: regex

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

  • 字符串不应小于2且不大于9999(2-9999)
  • 字符串在数字前不应该为零(例如:否0002,0022,0222)

我真的需要通过正则表达式完成此任务,因此任何其他解决方案都是不可接受的。

2 个答案:

答案 0 :(得分:2)

试试这个:

/^[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范围内。
  3. 注1: {1,3}限制第二个字符类只接受一个或两个或三个数字。

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

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

答案 1 :(得分:0)

试试这个

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

Regex demo

<强>解释
^\d{1,4}$:匹配0-9999
(?!0)...:号码前没有零(例如:否0002,0022,0222)
(?!1$)...:数字不小于2(== 1)
(?!…):否定前瞻sample
\d:0到9之间的一位数sample
^:根据多线模式开始字符串或起始线 $:字符串结束或行尾,具体取决于多行模式