【发布时间】:2021-09-13 13:19:36
【问题描述】:
至少有 2 个大写字母和任何特殊字母(如@#$%^&*()_-+= 等...)的单词可选。
我试过了:
public static boolean isWordHas2Caps(String s) {
return s.matches("\\b(?:\\p{Ll}*\\p{Lu}){2,}\\p{Ll}*\\b");
}
但是,我得到了
System.out.println(isWordHas2Caps("eHJHJK"));
System.out.println(isWordHas2Caps("YUIYUI"));
System.out.println(isWordHas2Caps("LkfjkdJkdfj"));
System.out.println(isWordHas2Caps("LLdkjkd"));
System.out.println(isWordHas2Caps("OhdfjhdsjO"));
System.out.println(isWordHas2Caps("LLLuoiu9898"));
System.out.println(isWordHas2Caps("Ohdf&jh/dsjO"));
System.out.println(isWordHas2Caps("auuuu"));
System.out.println(isWordHas2Caps("JJJJJJJJ"));
System.out.println(isWordHas2Caps("YYYY99999"));
System.out.println(isWordHas2Caps("ooooPPPP"));
输出:
true eHJHJK
true YUIYUI
true LkfjkdJkdfj
true LLdkjkd
true OhdfjhdsjO
false LLLuoiu9898 It should be true but getting false
false Ohdf&jh/dsjO It should be true but getting false
false auuuu
true JJJJJJJJ
false YYYY99999 It should be true but getting false
true ooooPPPP
我想,我应该在正则表达式和数字和特殊字母中。我该怎么做?
【问题讨论】:
-
你能更正我的正则表达式并分享正确的正则表达式吗?
-
使用
Pattern.compile("\\p{Lu}\\P{Lu}*\\p{Lu}").matcher(s).find(),回溯是轻量级的,因为\p{Lu}和\P{Lu}是互斥的。 -
@Sun,以下任何答案是否有助于您解决问题?