[英]Java regex match all characters except
匹配除特定字符之外的所有字符的正确语法是什么。
例如,我想匹配除字母[AZ] [az]
和数字[0-9]
。
我有
string.matches("[^[A-Z][a-z][0-9]]")
这不正确吗?
是的,您不需要像那样嵌套[]
。 改用这个:
"[^A-Za-z0-9]"
这都是一个字符类。
如果您想匹配除字母以外的任何内容,您应该查看Unicode properties 。
\\p{L}
是来自任何语言的任何类型的字母
使用大写的“P”代替它是否定,所以\\P{L}
将匹配任何不是字母的东西。
\\d
或\\p{Nd}
匹配数字
所以你在现代 Unicode 风格中的表达看起来像这样
要么使用否定字符类
[^\p{L}\p{Nd}]
或否定属性
[\P{L}\P{Nd}]
下一件事是, matches()
将表达式与完整字符串进行匹配,因此您的表达式仅在字符串中只有一个字符时才为真。 所以你需要添加一个量词:
string.matches("[^\p{L}\p{Nd}]+")
返回真,当完整的字符串只有非字母数字并且至少有一个时。
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.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.