繁体   English   中英

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

[英]Regex that blocks single digit numbers 2,3,4,5

我对正则表达式非常陌生,在某些特殊情况下,需要一个正则表达式来阻止数字:

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被阻塞了。

对此的任何帮助将非常有帮助。

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

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

正则表达式可视化

演示

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

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

正则表达式可视化

演示

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

例如:

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

只检查包含那些数字以外的所有内容的模式怎么办?

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

正则表达式的结果

很简单

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM