最新手机号正则(2020年)

2018-01-20 宋洋葱 宋洋葱

在开发的时候一般会使用到手机号,有的需要通过正则匹配手机号,然后提取。有的需要通过正则表达式判断是否是手机号。还有的情况是需要用正则替换手机号。用正则表达式验证手机号的正确是很常见的做法。

首选需要了解最新手机号的格式如下:

中国内地手机卡号以1开头,共11位数,前7位数字通常称为手机号段。

示例:1XX-YYYY-ZZZZ

  • 第1~3位数表示电信运营商。
  • 第4~7位数表示地区号码(YYYY)。
  • 第8~11位数表示客户号码(ZZZZ)。

注:2010年11月,携号转网政策在部分地区开始试行,对于成功进行携号转网的用户,手机号段不再能体现其当前所属运营商。

中国移动
共计21个号段:1340~1348、135~139、147、148、150~152、157~159、178、182~184、187~188、198

147号段为4G数据上网卡号段、148号段为物联网业务专用号段。2017年新增:148、198。

中国联通

共计12个号段:130~132、145~146、155~156、166、175~176、185~186

145为上网卡号段,146号段为物联网业务专用号段。2017年新增:146、175。

中国电信

共计11个号段:133、1349、149、153、173~174、177、180~181、189、199

其中1349、17400-17405号段:专用于卫星手机。17406-17412号段由工业和信息化部应急通信保障中心持有,用于应急通信需求。2017新增:149、173-174、199。

虚拟运营商

共4个号段:165/167/170/171

上网卡/物联网卡

14/172/ 无法拨打电话/收发短信

其他未分配的为预留号段或卫星号段。

综合来看

具有短信+语音功能的号段主要有:

前2位 第3位 说明
13 0~9
15 0~3/5~9
16 5~7
17 0~1/3~8
18 0~9
19 1/8~9

最新手机号正则表达式如下:

手机号正则JavaScript的js版本如下:

^((13[0-9])|(15[^4,\D])|(16[5-7])|(17[0-1,3-8])|(18[0-9])|(19[1,8-9]))\d{8}$

java中需要对\进行转义,即两个\\,手机号正则java版本如下:

^((13[0-9])|(15[^4,\\D])|(16[5-7])|(17[0-1,3-8])|(18[0-9])|(19[1,8-9]))\\d{8}$

参考