首页 > 解决方案 > 包含 0 和 4-9(4 ,5,6,7,8,9) 的字符串的正则表达式模式

问题描述

我正在处理一个字符串。用例是我不想要一个具有 4 到 9 和 0 的任何数字的字符串。

例子:-

ABC0123-> Not Valid.
XYZ002456789->Not Valid.
ABC123->Valid
ABC1->Valid

我尝试过以下模式,但没有成功。

String pattern = "^[0,4-9]+$"; 
if(str.matches(pattern)){
      //do something.
}

标签: javaregex

解决方案


首先,从字符类中删除逗号。你不是在寻找逗号。

由于您不允许,因此不要锚定表达式,允许匹配字符串中的任何位置。实际上,matches为您锚定了表达式,因此我们必须在不允许的字符类之前和之后故意允许字符:

String pattern = ".*[04-9].*";
if(str.matches(pattern)){
      // disallow
}

现场示例

.*或者,您可以通过使用Pattern.compile然后使用结果Pattern而不是来避免将它们放在其中matches,因为它不会像matches那样自动锚定模式。


推荐阅读