如何编写符合指定规则的公司缩写验证正则表达式?
公司缩写校验正则解决方案
规则梳理
- 首尾可包含任意数量(0个及以上)的星号
- 中间核心部分由2组及以上的「单个大写英文字母+英文句号」结构组成
- 禁止出现连续句号、大写字母后不跟句号、仅1组核心结构的情况
原正则缺陷分析
你当前使用的^\*+[A-Z]+\.[A-Z]+\.\*+$存在几个问题:
- 首尾的
\*+强制要求必须至少有1个星号,无法匹配无首尾星号的合法输入(如M.A.S.H.) - 中间的
[A-Z]+\.允许多个大写字母共用1个句号,不符合「每个大写字母后必须紧跟英文句号」的要求 - 仅支持2组「大写字母+句号」的结构,无法匹配3组及以上的合法输入
正确正则表达式
^\**(?:[A-Z]\.){2,}\**$
规则说明
^:匹配字符串开始位置\**:匹配开头0个及以上的星号(?:[A-Z]\.){2,}:非捕获组,匹配2次及以上的「单个大写字母+英文句号」组合,满足中间至少2个大写字母且每个都带句号的要求\**:匹配结尾0个及以上的星号$:匹配字符串结束位置
用例验证
有效输入(全部可正常匹配)
*S.A.*M.A.S.H.*X.Y.*
无效输入(全部无法匹配)
*A.*:仅1组核心结构,不足2组要求P.I.B:最后一个大写字母B后没有紧跟句号*ETC...*:多个大写字母仅共用1个句号,且存在连续句号
内容的提问来源于stack exchange,提问作者CrossviG
相关产品推荐
相关产品推荐

