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

Java中如何编写可匹配各类特殊格式缩写词的正则表达式?

解决方案

修正后的Java代码

public static boolean isAcronyms(String s){
    // 规则:整个字符串至少包含2个大写字母,其余可为任意字母、数字、特殊字符
    return s.matches("^(?=(?:.*[A-Z]){2,})[\\p{L}\\p{N}\\p{P}\\p{S}]+$");
}

正则规则说明

  • ^ 匹配字符串开头,$ 匹配字符串结尾,配合String.matches()的全量匹配特性,确保校验的是整个输入单词
  • (?=(?:.*[A-Z]){2,}) 正向肯定预查:校验字符串中至少存在2个大写英文字母,该规则仅做校验不消耗匹配字符
  • [\\p{L}\\p{N}\\p{P}\\p{S}]+ 匹配1个及以上合法字符,覆盖所有你需要的字符类型:
    • \p{L}:任意大小写字母
    • \p{N}:任意数字
    • \p{P}:任意标点符号(包含示例中的&///-等)
    • \p{S}:任意特殊符号,覆盖更多扩展场景

原写法问题排查

  1. 第一个正则是为匹配带点的缩写(如U.S.A.)设计,完全不符合你的需求,同时存在语法错误(预查未闭合括号)、Java转义错误的问题
  2. 第二个正则[A-Z].*[A-Z]逻辑接近,但没有限制输入为单个单词,会错误匹配包含空格的多单词内容
  3. 第三个正则限制了大写字母的出现格式,无法匹配带特殊符号、数字的缩写场景

匹配验证

你给出的所有示例均可正常匹配:

  • eCRM ✅
  • L&T ✅
  • T/C ✅
  • Top/Bo ✅
  • e-TV ✅
  • SDLC ✅
  • RA/VI ✅
  • Ra&Vi ✅
  • RaVi ✅
  • JB007 ✅

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:54:04