手机号正则校验优化需求:排除全0/全1且长度7-15位
优化后的手机号校验正则表达式
直接给出满足需求的正则:
^(?!0+$|1+$)[0-9]{7,15}$
规则拆解
^和$:锁定整个字符串的首尾,避免出现部分匹配(比如长字符串里包含符合规则的子串但整体不符合的情况)(?!0+$|1+$):负向前瞻断言,用来排除两种无效情况:0+$:匹配全由0组成的字符串(长度≥1)1+$:匹配全由1组成的字符串(长度≥1)
[0-9]{7,15}:保留原规则,匹配7到15位的数字字符
匹配/不匹配示例
符合规则(会匹配)
1234567(7位普通数字)012345678(含0但非全0)11111112(含1但非全1)987654321012345(15位数字)
不符合规则(不会匹配)
0000000(全0)111111111(全1)123456(长度仅6位)1234567890123456(长度16位)
补充说明
这个正则只针对你提出的核心需求做了优化——限定长度+排除全0/全1。如果后续需要针对特定地区的手机号号段做更严格的校验(比如国内手机号的11位开头规则),可以在这个基础上进一步调整断言逻辑。
内容的提问来源于stack exchange,提问作者Rahul
相关产品推荐
相关产品推荐

