我正在寫一個Pattern
匹配由4個大寫字母組成的String
。這種模式有什麼問題:Pattern.compile(「\ p {Upper} {4}」)
例如:
- 「AAAA」
- 「ABCD」
- 「ZZZZ」
...都是正確的匹配,而:
- 「1DFG」
- 「!@#$」
- 「1234」
...應該不匹配。
在下面找到我的代碼。
它一直在「AAAA」上返回false
。
任何人都可以對此有所瞭解嗎?
public static boolean checkSettings(String str) {
Pattern p = Pattern.compile("\\p{Upper}{4}");
Matcher m = p.matcher("%str".format(str));
if (m.matches()) {
return true;
} else {
// System.exit(1)
return false;
}
}
你應該使用[AZ] {4} – Marc
@Mark這不會有什麼區別 –
這非常可疑:''%str「.format(str)''format'方法是靜態的,所以' %str'字符串被忽略。第一個參數(這裏是「str」)是格式字符串,所以如果傳入的字符串包含任何格式化符號,則您的方法將崩潰。 – Joni