regex 正则表达式匹配除0和1以外的任何数字,最多由四位数字组成

olhwl3o2  于 2022-12-30  发布在  其他
关注(0)|答案(4)|浏览(239)

我尝试使用下面的代码匹配除0和1之外的任何数字(比如2到9999),但似乎没有达到预期效果。

\d[0-9]?[0-9]?[^0-1]*
pnwntuvh

pnwntuvh1#

regex的字符类中排除01

[2-9]{1}\d{0,3}

这将匹配不以01开头的所有数字。
RegEx101 Demo

    • 编辑**

匹配01之外的所有数字

[2-9]{1,4}

RegEx101 Demo

l7wslrjt

l7wslrjt2#

您可以使用匹配从2到9999的所有数字

\b(?![01]\b)\d{1,4}\b

或者(如果有单独的字符串)

^(?![01]$)\d{1,4}$

参见demo
(?!...)是一个负前瞻,此处用于定义异常。

    • 更多详细信息**
  • \b-字边界(如果使用^-字符串开始)
  • (?![01]\b)-如果01[01]是与类中定义的集合中的单个字符匹配的字符类)作为整个单词(如果使用$而不是\b,则为字符串),则匹配失败的负前瞻
  • \d{1,4}-1、2、3或4位数字
  • \b-结尾词边界(数字、字母或_不能直接出现在右侧,如果可以出现字母或_,则替换为(?!\d))。
vh0rcniy

vh0rcniy3#

如果你想得到2到9999之间的所有数字,你需要检查两种情况,如果它是一个长度为1的数字,然后排除密码0和1,或允许一切,如果长度大于1。

(([2-9]{1})|([1-9]{1}[0-9]{1,}))

这不允许0和1,但允许111、322、20或24。

gg58donl

gg58donl4#

这应该匹配1到无穷大之间的任何值,并匹配1到9之间的一个或多个数字,后面跟着0或多个0。

  • 1
  • 10
  • 11
  • 100
  • 101010101
  • 99
  • 甚至42部作品

但对003004024不起作用

[1-9]+[0-9]{0,}

相关问题