java - 包含 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.
}
解决方案
首先,从字符类中删除逗号。你不是在寻找逗号。
由于您不允许,因此不要锚定表达式,允许匹配字符串中的任何位置。实际上,matches
为您锚定了表达式,因此我们必须在不允许的字符类之前和之后故意允许字符:
String pattern = ".*[04-9].*";
if(str.matches(pattern)){
// disallow
}
.*
或者,您可以通过使用Pattern.compile
然后使用结果Pattern
而不是来避免将它们放在其中matches
,因为它不会像matches
那样自动锚定模式。
推荐阅读
- c# - C# MVC 允许更新重新编辑的字段
- tensorflow - 预测概率是否高于某个值
- swift - 从文件应用程序将 mp3 文件添加到 iOS 应用程序的内部存储
- asp.net-mvc - 生成文档的最佳 ASP.NET MVC 方式
- c++ - 显式类型转换真的有必要吗?
- r - R:为数据框生成动态名称
- javascript - Tabulator: Download Error - No such download type found
- autodesk-forge - 在 Autodesk.Viewing.Viewer3D 中显示上下文菜单
- timeout - 逻辑应用程序 Web 挂钩到黑板 API 超时错误
- kotlin - 如何转换流
流动 - > 在科特林?