我对正则表达式很新,对于某些特殊情况需要一个能阻止数字的正则表达式:
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>
对此的任何帮助都会非常有用。
答案 0 :(得分:3)
对于[2; 5]范围之外的范围[0; 21],您可以使用以下内容:
^(?:[016789]|1\d|2[01])$
<强> Demo 强>
如果您只需要排除[2; 5]范围,则以下内容可能适合您:
^(?:[016789]|[1-9]\d+)$
<强> 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])
答案 3 :(得分:0)