我在处理一条绳子。用例是我不想要一个数字为4到9和0的字符串。
例子:-
ABC0123-> Not Valid.
XYZ002456789->Not Valid.
ABC123->Valid
ABC1->Valid
我试过下面的模式,但没有成功。
String pattern = "^[0,4-9]+$";
if(str.matches(pattern)){
//do something.
}
发布于 2018-10-15 16:31:23
首先,从字符类中删除逗号。你不是在找逗号。
由于您不允许,不要锚定表达式,允许匹配在字符串中的任何位置。实际上,matches
为您锚定表达式,因此我们必须在不允许的字符类之前和之后故意允许字符:
String pattern = ".*[04-9].*";
if(str.matches(pattern)){
// disallow
}
或者,您可以通过使用.*
,然后使用生成的Pattern
而不是matches
来避免将这些Pattern
放在其中,因为它不会像matches
那样自动锚定模式。
发布于 2018-10-15 16:33:00
匹配包含4-9和0的正则表达式比不匹配包含4-9和0的正则表达式容易得多。
[4-90]
然后调用find
,然后反转结果:
if (!Pattern.compile("[4-90]").matcher(someString).find()) {
// ...
}
https://stackoverflow.com/questions/52821016
复制相似问题