4 回答
TA贡献1777条经验 获得超3个赞
如果你想检查text 不包含任何字母[A-Za-z],试试这个:
if (!text.matches("[A-Za-z]+")) {
System.out.println("no letters");
}
如果你想检查text 只包含数字和给定的特殊字符,试试这个:
String regex = "[0-9\\-/@#$%^&_+=()]+";
if (text.matches(regex)) {
System.out.println("no letters");
}
请注意,-必须由 a转义,而 a\本身必须转义。
TA贡献1828条经验 获得超4个赞
以下是可能适用于各种要求的几种解决方案:
文本不得包含纯 ASCII 字母
if (text.matches("\\P{Alpha}+")) {
System.out.println("No ASCII letters");
}
文本必须没有来自整个 BMP 平面的字母
if (text.matches("\\P{L}+")) {
System.out.println("No Unicode letters");
}
文本不得包含字母字符
if (text.matches("\\P{IsAlphabetic}+")) {
System.out.println("No alphabetic chars");
}
*注意:IsAlphabetic该类包括L、Nl(字母编号)和Other_Alphabetic类别,可能过于宽泛,但如果您需要检查字母和变音符号,这很好。
该String#matches方法需要完整的字符串匹配,因此上面的代码片段中没有使用锚点( ^/\A和$/ )。\z
TA贡献1806条经验 获得超5个赞
在 Java 正则表达式中,'match' 和 'find' 是不同的方法。如果您的字符串只包含您想要查找的字母,请使用 'find'。或者如果您想要匹配整个字符串,请使用 'match'
添加回答
举报