RegeX一起限制范围

我是regeX的新手,我正在寻找满足以下条件的表达式

  1. 应仅验证数字。不接受小数。(例如:123、11、1025、0548)
  2. 不应超过7位数字

我尝试了以下regeX

^[1-9][0-9]*$

但是它对于大于0的数字很好用。

然后我尝试了

 ^[1-9][0-9]\d{1,7}$

,但接受数字是否大于2个数字。当我给出12时,它返回false。当我给出123时,它返回true

当我输入0124时也会返回false

对于不同的输入,请同时参考以下几点

  1. 1、12、432、12414、1234567等均为有效输入。大于0,最大长度为7
  2. 01、0121、0000001等也有效。 0000001大于0。
  3. 0、​​12345678等无效,因为它不应接受小于0或长度大于7的
  4. 所有负值均无效,所有字符均无效
wangwangla11 回答:RegeX一起限制范围

您可以为此使用负前瞻。这种模式可以正常工作:

<%@page contentType="text/html" pageEncoding="UTF-8"%>

说明:

  • ^(?!0+$)\d{1,7}$ 否定前瞻,它检查字符串是否不是全部^(?!0+$)前瞻表示,如果匹配,整个模式将匹配。
  • 0检查字符串是否由1到7个字符组成,这些字符都是数字。

(我正在为前瞻和实际模式重用^ \d{1,7}$锚,因为它们可以共享,因为前瞻是从头开始的。^也可以添加到前瞻:^,但不会有任何影响。)

regex101 demo

,

如果支持断言至少1到9的数字,然后匹配1到7的数字,则可以使我们前瞻(?=[0-9]*[1-9])

^(?=[0-9]*[1-9])[0-9]{1,7}$

部分

  • ^字符串的开头
  • (?= Positive lookahead,断言右边是
    • [0-9]*[1-9]匹配0+匹配数字0-9,然后匹配数字1-9
  • )提前关闭
  • [0-9]{1,7}匹配一个数字0-9 1-7次
  • $字符串结尾

Regex demo

本文链接:https://www.f2er.com/3151771.html

大家都在问