手机号校验正则规则详解(更新于2025年5月)
·
在前端开发中,经常需要对用户输入的手机号进行格式校验。为了避免无效手机号进入系统,我们通常会使用正则表达式进行验证。
下面是一个常用的手机号校验正则表达式:
const telStr = /^[1](([3][0-9])|([4][0,1,4-9])|([5][0-3,5-9])|([6][2,5,6,7])|([7][0-8])|([8][0-9])|([9][0-3,5-9]))[0-9]{8}$/;
const inputStr = "18810998988";
if (!telStr.test(inputStr)) {
console.log("手机号码输入不规范");
} else {
console.log("手机号码输入规范");
}
正则表达式拆解说明
^1:以1开头,这是中国大陆手机号码的统一前缀。([3][0-9]):匹配130-139之间的号段(常见于移动、联通)。([4][0,1,4-9]):匹配以4开头的合法号段(例如 145、147、149)。([5][0-3,5-9]):排除无效的154,保留如150-153、155-159。([6][2,5,6,7]):匹配合法的6开头号段,如162、165、166、167。([7][0-8]):匹配170-178的常规虚拟和运营商号段。([8][0-9]):匹配180-189。([9][0-3,5-9]):排除94,保留90-93和95-99。[0-9]{8}:手机号的后8位。
总长度:11位。
各运营商手机号段一览
为了更精准地理解号段分布,下面列出了主要运营商的手机号段:
📱 中国电信号段:
133、149、153、173、177、180、181、189、190、191、193、199
虚拟运营商:1700、1701、1702、162
📱 中国联通号段:
130、131、132、145、155、156、166、167、171、175、176、185、186、196
虚拟运营商:1704、1707、1708、1709、167、171
📱 中国移动号段:
134(0-8)、135、136、137、138、139、1440、147、148、150、151、152、
157、158、159、172、178、182、183、184、187、188、195、197、198
虚拟运营商:1703、1705、1706、165
📡 中国广电:
192
🛰 其他特殊号段:
- 卫星通信:1349、174
- 物联网设备卡专属:140、141、144、146、148
- 部分上网卡专属号段:145(联通)、147(移动)、149(电信)
🚫 暂未分配号段:
142、143、154、161、164、194
小结
如果你正在开发用户注册、短信验证码、登录等功能,强烈建议使用符合运营商最新号段的正则表达式来校验手机号。
当然,运营商号段可能还会继续更新,如果对手机号格式有极高的准确性要求,建议定期查阅 工信部-电信网编号计划专栏、百度百科 - 手机号段 的最新信息。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)