正则表达式匹配除0和1之外的任何数字

时间:2015-07-20 10:44:25

标签: regex

我尝试使用以下内容来匹配除0和1之外的任何数字(例如,2到9999),但它似乎无法正常工作。

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

4 个答案:

答案 0 :(得分:4)

0中的字符类中排除1regex

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

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

RegEx101 Demo

修改

匹配01以外的所有数字

[2-9]{1,4}

RegEx101 Demo

答案 1 :(得分:2)

您可以使用

匹配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) })。

答案 2 :(得分:0)

如果你想获得2到9999之间的所有数字,你需要检查两种情况,如果它是长度为1的数字,然后排除密码0和1,或者如果长度为>则允许所有数据。所以解决方案就像:

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

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

答案 3 :(得分:0)

这应匹配1和无穷大之间的任何值,并匹配1到9之间的1位或9位后跟0或更多0位数。

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

但它不适用于003 004 024:

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