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

问题描述 投票:3回答:6

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

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

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

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

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

regex
6个回答
1
投票

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

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

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


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
投票

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


1
投票

这应该做的工作:

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

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


1
投票

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

Regex demo


1
投票

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

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


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

© www.soinside.com 2019 - 2024. All rights reserved.