如何正确匹配除特定字符之外的所有字符。
例如,我想匹配除字母 [A-Z] [a-z]
和数字 [0-9]
以外的所有内容。
我有:
string.matches("[^[A-Z][a-z][0-9]]")
这个有错误吗?
是的,您不需要像那样使用嵌套的[]
。改用这个:
是的,您不需要像那样使用嵌套的[]
。改用这个:
"[^A-Za-z0-9]"
这都属于一个字符类。
\p{L}
表示来自任何语言的任何类型的字母。\P{L}
将匹配任何不是字母的内容。
\d
或\p{Nd}
匹配数字。[^\p{L}\p{Nd}]
[\P{L}\P{Nd}]
matches()
将表达式与完整字符串匹配,因此您的表达式仅在字符串中具有一个字符时才为真。因此,您需要添加限定符:string.matches("[^\p{L}\p{Nd}]+")
当完整字符串仅由非字母数字字符组成且至少有一个时,返回true。
string.matches("[^A-Za-z0-9]")
Pattern pattern = Pattern.compile("_");
Matcher matcher = Pattern.matcher(stringName);
if(!matcher.find()){
System.out.println("Valid String");
}else{
System.out.println("Invalid String");
}
您可以否定字符类:
"[^abc]" // matches any character except a, b, or c (negation).
"[^a-zA-Z0-9]" // matches non-alphanumeric characters.