js正则验证手机号码
2019-06-11 本文已影响0人
前端_逗叔
说明
image.png今天做测试的同事问我,你页面上的手机号码是怎么验证的?验证规则是怎样的?
国内手机号码的正则验证是很早之前我就进行统计过form-validate
,网上关于手机号码的验证有很多,但是很多都太笼统了,要么就是不全,当时就想着自己整理一下,虽然不能验证号码的真实性,但是对目前的号段都进行了验证,反正我自己用着挺好,先上代码。
代码
/^(((13[0-9]{1})|(14[57]{1})|(15[012356789]{1})|(17[03678]{1})|(18[0-9]{1})|(19[89]{1})|(16[6]{1}))+\d{8})$/;
正则分析
规则说明
国内手机号码为11位数字,前两位只能为:13\14\15\16\17\18\19。
三大运营商号段分配情况
中国移动
号段 | 可选值 |
---|---|
13x | 134X(0-8)、135、136、137、138、139 |
14x | 147(数据卡) |
15x | 150、151、152、157X(0-7\9)(TD)、158、159 |
17x | 178(4G) |
18x | 182 、183、184、187(3G\4G)、188(3G) |
19x | 198(2017-08-16 说明见附录一) |
中国联通
号段 | 可选值 |
---|---|
13x | 130、131、132 |
14x | 145(数据卡) |
15x | 155、156 |
17x | 176(4G) |
18x | 185(3G)、186(3G) |
16x | 166(2017-08-16 说明见附录一) |
中国电信
号段 | 可选值 |
---|---|
13x | 133、(1349卫通) |
15x | 153 |
17x | 177(4G)、173(最近刚开通) |
18x | 180(3G)、181(3G)、189(3G) |
19x | 199(2017-08-16 说明见附录一) |
虚拟运营商
号段 | 可选值 |
---|---|
170 | - |
号码组成
- 目前我国使用的手机号码为11位,其中各段有不同的编码方向
- 前3位:网络识别号
- 第4~7位:地区编码
- 第8~11位:用户号码
- 电话号码编码规则:国家代码 + 地区代码 + 电话号码(服务商代码 + 4位用户号码)