You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java正则如何匹配含至少2个大写字母、可带数字及特殊字符的字符串

问题原因

你原有正则的问题在于仅允许小写字母(\p{Ll})和大写字母(\p{Lu})组合,完全排除了数字、特殊字符的存在,因此包含非大小写字母的字符串都会匹配失败。

解决方案

直接放宽非大写字符的匹配限制即可,只要保证整个字符串中至少存在2个大写字母,其余字符可以是任意类型(小写、数字、你提到的特殊字符均支持),修改后的代码如下:

public static boolean isWordHas2Caps(String s) {
    // 兼容Unicode大写字母,允许所有非大写字符存在
    return s.matches("^(?:\\P{Lu}*\\p{Lu}){2,}.*$");
}

正则说明

  • ^ 匹配字符串起始位置
  • (?:\\P{Lu}*\\p{Lu}){2,} 非捕获组,匹配「任意个非大写字符 + 1个大写字母」的组合至少2次,确保字符串内最少有2个大写字母
  • .* 匹配2个大写字母之后剩余的所有字符
  • $ 匹配字符串结束位置

校验效果验证

符合你的规则的测试用例均返回正确结果:

  • LLLuoiu9898 → true
  • Ohdf&jh/dsjO → true
  • YYYY99999 → true
  • 仅含1个大写字母的字符串(如A123@abc)→ false,符合校验要求

内容的提问来源于stack exchange,提问作者Sun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 12:45:05