java - 包含 0 和 4-9(4 ,5,6,7,8,9) 的字符串的正则表达式模式

标签 java regex

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

例子:-

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

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

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

最佳答案

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

因为您不允许,所以不要锚定表达式,允许匹配字符串中的任何位置。事实上,matches 为您锚定了表达式,因此我们必须有意允许在不允许的字符类前后使用字符:

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

Live Example

或者,您可以通过使用 Pattern.compile 然后使用生成的 Pattern 而不是 来避免那些 .* >matches,因为它不会像 matches 那样自动锚定模式。

关于java - 包含 0 和 4-9(4 ,5,6,7,8,9) 的字符串的正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52821016/

相关文章:

javascript - 在 JavaScript 中测试字符串是否为有效标识符名称的方法

java - 如何使用正则表达式检查 html 文档是否包含不为空的脚本标签

java - 我可以将一个 Runnable 用于两个线程,以便一个生成,一个消耗吗?

java - 读取 EAR 的 list

java - 如何手动获取 get(...) 索引

java - 如何让inotify在处理多个文件时等待

php - 无法发送 2 个字符的输入

java - 哈希表替代品

C# 在使用 Json.NET 读取 JSON 内容时保留转义序列

php - 正则表达式仅检查每行的第一个匹配项