正则表达式匹配任何数字除外

时间:2018-01-29 15:51:11

标签: regex

我有这个正则表达式,我试图匹配任何除了以下数字

0|1|2|3|4|5|6

^(?!(0|1|2|3|4|5|6)).*

我可以让它在7或8或9上匹配,但是因为它们以我不想匹配的数字开头,所以10不起作用也不起作用。

例如,如果我的号码是22,那么它会匹配。 如果我的号码是2,那么就不匹配了。

7 个答案:

答案 0 :(得分:2)

我相信这是最快的正则表达式方法(检查0到30之间的每个数字时有127步)。

See regex in use here

\d{2,}|[7-9]
  • \d{2,}匹配任何2位数字。
  • [7-9]如果您想使用排除范围而不是可接受的范围,也可以使用[^\D0-6]

或者,如果您有更大的机会获得一位数数字,那么将条件转换为获得[7-9]|\d{2,}可以提高效果。

答案 1 :(得分:1)

[^0123456]|(\d{2,})怎么样?这样你可以否定你不想要的那些,但它仍然会匹配2位或更多位的数字。

答案 2 :(得分:1)

试试这个^(?![0-6]$)\d+$

不匹配仅包含0-6的字符串,所有其他数字都可以。

使用此^(?!0*[0-6]$)\d+$将匹配数字,数字大于6。

答案 3 :(得分:1)

这应该做的工作:

^(?:[7-9]|\d{2,})$

访问this link以测试正则表达式。

答案 4 :(得分:1)

正则表达式\b[7-9]\b|\b[1-9]\d+\b

Regex demo

答案 5 :(得分:1)

我认为你可以更新你的正则表达式,在组后面添加一个单词边界\b

^(?!(0|1|2|3|4|5|6)\b).*

你也可以写这个更短的替换或语句范围从0到6的语句,如: ^(?![0-6]\b).*

答案 6 :(得分:0)

使用它可以匹配除39 / ^ +(([[0-24-9] [0-8]?[0-9] )|([3] [0-8 ] [0-9] )|([3]))$ /