4 回答

TA貢獻1777條經(jīng)驗 獲得超3個贊
如果你想檢查text 不包含任何字母[A-Za-z],試試這個:
if (!text.matches("[A-Za-z]+")) {
System.out.println("no letters");
}
如果你想檢查text 只包含數(shù)字和給定的特殊字符,試試這個:
String regex = "[0-9\\-/@#$%^&_+=()]+";
if (text.matches(regex)) {
System.out.println("no letters");
}
請注意,-必須由 a轉(zhuǎn)義,而 a\本身必須轉(zhuǎn)義。

TA貢獻1828條經(jīng)驗 獲得超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條經(jīng)驗 獲得超5個贊
在 Java 正則表達式中,'match' 和 'find' 是不同的方法。如果您的字符串只包含您想要查找的字母,請使用 'find'。或者如果您想要匹配整個字符串,請使用 'match'
添加回答
舉報