手机号码Regex验证修复:672开头仅9位、其余允许10位的正则调整问题
问题根因
原正则的两个匹配分支并行生效,以672开头的10位号码会命中第一个^\d{10}$的10位数字匹配规则,直接通过校验,不会触发第二个分支的672开头长度限制逻辑。
修复后的正则
/^(?!672)\d{10}$|^672\d{6}$/
规则说明
- 新增的
(?!672)为负向前瞻断言,限制10位数字的号码不能以672开头 - 前半段
^(?!672)\d{10}$匹配所有非672开头的10位普通号码 - 后半段
^672\d{6}$匹配672开头、后接6位数字、总长度为9位的特殊号码
校验效果
- 合法通过:非672开头的10位数字、672开头的9位数字
- 非法拦截:672开头的10位数字、非672开头的9位数字、长度不符合要求的其他号码
内容的提问来源于stack exchange,提问作者mk23
相关产品推荐
相关产品推荐

