阻止单个数字2,3,4,5的正则表达式

时间:2014-06-12 12:45:10

标签: java regex

我对正则表达式很新,对于某些特殊情况需要一个能阻止数字的正则表达式:

2,3,4 and 5

......出自:

0 to 21

具体来说,这应该只阻止单个数字2,3,4和5而不是12,13,14,15或21和22。

我尝试了[^\d2-5]但是它也阻止了12,13,14,15,21,20,22,这是不可取的,因为只有4个数字特别是2,3,4和5被阻挡。 / p>

对此的任何帮助都会非常有用。

4 个答案:

答案 0 :(得分:3)

对于[2; 5]范围之外的范围[0; 21],您可以使用以下内容:

^(?:[016789]|1\d|2[01])$

Regular expression visualization

<强> Demo

如果您只需要排除[2; 5]范围,则​​以下内容可能适合您:

^(?:[016789]|[1-9]\d+)$

Regular expression visualization

<强> Demo

答案 1 :(得分:1)

如果我正确理解了您的问题,您可以尝试通过用字边界分隔它们来查找这些特定数字。

例如:

String singleDigitsToBeBlocked = "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21";
Pattern p = Pattern.compile("\\b[2-5]\\b");
Matcher m = p.matcher(singleDigitsToBeBlocked);
while (m.find()) {
    System.out.printf("Blocked: %s%n", m.group());
}

<强>输出

Blocked: 2
Blocked: 3
Blocked: 4
Blocked: 5

答案 2 :(得分:1)

如何检查包含除了那些单个数字之外的所有模式?

(\b[0-9]{2,})|([01])|([6-9])

result of regex

答案 3 :(得分:0)

非常简单

(?:1[0-9]|2[0-1]|[0-1]|[6-9])

您可以在此处测试:http://www.regexr.com/39044