简化税号正则表达式:将复杂度从21降至20的技术求助
税号正则表达式简化方案
优化思路
原正则重复使用^和$锚点,且分支完全独立,是SonarLint复杂度超标的核心原因。优化方向为统一锚点+合并同前缀分支,通过减少冗余结构降低复杂度。
简化后的正则
^(?:\d{9}|\d{2}-\d{7}|\d{3}(?:-\d{2}-\d{4}|-\d{3}-\d{3}))$
优化说明
- 统一锚点:将所有匹配分支包裹在一对
^和$中,避免重复锚点带来的额外复杂度计算 - 合并同前缀分支:把以
\d{3}开头的两个税号格式(555-55-5555、555-555-555)用非捕获组(?:...)合并,减少独立分支数量 - 完全保留原匹配规则,仅调整结构,匹配范围不变:
555555555→ 匹配\d{9}分支55-5555555→ 匹配\d{2}-\d{7}分支555-55-5555→ 匹配\d{3}-\d{2}-\d{4}分支555-555-555→ 匹配\d{3}-\d{3}-\d{3}分支
效果验证
调整后的正则通过整合冗余结构,SonarLint计算的复杂度会降至20以下,满足合规要求。
内容的提问来源于stack exchange,提问作者scottyboombox
相关产品推荐
相关产品推荐

