项目地址:https://github.com/VincentSit/ChinaMobilePhoneNumberRegex

限制

中国大陆已于中国标准时间 2019 年 12 月 1 日正式开启携号转网服务,通过手机号码检测移动通信运营商已经不再精准。然而目前还没有其他替代方案。

正则表达式 (PCRE)

匹配所有号码(手机卡 + 数据卡 + 上网卡)

^(?:\+?86)?1(?:3\d{3}|5[^4\D]\d{2}|8\d{3}|7(?:[0-35-9]\d{2}|4(?:0\d|1[0-2]|9\d))|9[0-35-9]\d{2}|6[2567]\d{2}|4(?:(?:10|4[01])\d{3}|[68]\d{4}|[579]\d{2}))\d{6}$

匹配所有支持短信功能的号码(手机卡 + 上网卡)

^(?:\+?86)?1(?:3\d{3}|5[^4\D]\d{2}|8\d{3}|7(?:[0-35-9]\d{2}|4(?:0\d|1[0-2]|9\d))|9[0-35-9]\d{2}|6[2567]\d{2}|4[579]\d{2})\d{6}$

手机卡

匹配所有

^(?:\+?86)?1(?:3\d{3}|5[^4\D]\d{2}|8\d{3}|7(?:[235-8]\d{2}|4(?:0\d|1[0-2]|9\d))|9[0-35-9]\d{2}|66\d{2})\d{6}$

匹配中国移动

^(?:\+?86)?1(?:3(?:4[^9\D]|[5-9]\d)|5[^3-6\D]\d|7[28]\d|8[23478]\d|9[578]\d)\d{7}$

匹配中国联通

^(?:\+?86)?1(?:3[0-2]|[578][56]|66|96)\d{8}$

匹配中国电信

^(?:\+?86)?1(?:3(?:3\d|49)\d|53\d{2}|8[019]\d{2}|7(?:[37]\d{2}|40[0-5])|9[0139]\d{2})\d{6}$

匹配中国广电

^(?:\+?86)?192\d{8}$

匹配北京船舶通信导航有限公司(海事卫星通信)

^(?:\+?86)?1749\d{7}$

工业和信息化部应急通信保障中心(应急通信)

^(?:\+?86)?174(?:0[6-9]|1[0-2])\d{6}$

虚拟运营商

匹配所有

^(?:\+?86)?1(?:7[01]|6[257])\d{8}$

匹配中国移动

^(?:\+?86)?1(?:65\d|70[356])\d{7}$

匹配中国联通

^(?:\+?86)?1(?:70[4789]|71\d|67\d)\d{7}$

匹配中国电信

^(?:\+?86)?1(?:70[012]|62\d)\d{7}$

物联网数据卡

匹配所有

^(?:\+?86)?14(?:[14]0|41|[68]\d)\d{9}$

匹配中国移动

^(?:\+?86)?14(?:4[01]|8\d)\d{9}$

匹配中国联通

^(?:\+?86)?146\d{10}$

匹配中国电信

^(?:\+?86)?1410\d{9}$

上网卡

匹配所有

^(?:\+?86)?14[579]\d{8}$

匹配中国移动

^(?:\+?86)?147\d{8}$

匹配中国联通

^(?:\+?86)?145\d{8}$

匹配中国电信

^(?:\+?86)?149\d{8}$

在线测试/调试

https://regex101.com
https://regexr.com
https://www.debuggex.com (PCRE 在线视觉化)

规则

手机卡 – 基础运营商

  • 支持语音通话 / 短信 / 数据流量
  • 号码长度 11 位
运营商 [1]号段
中国移动134-0~8 / 135 / 136 / 137 / 138 / 139 / 150 / 151 / 152 / 157 / 158 / 159 / 172 / 178 / 182 / 183 / 184 / 187 / 188 / 195 / 197 / 198
中国联通130 / 131 / 132 / 155 / 156 / 166 / 175 / 176 / 185 / 186 / 196
中国电信133 / 134-9 / 153 / 173 / 174-00~05 / 177 / 180 / 181 / 189 / 190 / 191 / 193 / 199
中国广电192
北京船舶通信导航有限公司(海事卫星通信)174-9
工业和信息化部应急通信保障中心(应急通信)174-06~12

手机卡 – 虚拟运营商

  • 支持语音通话 / 短信 / 数据流量
  • 号码长度 11 位
运营商 [1]号段
中国移动165 / 1703 / 1705 / 1706
中国联通167 / 1704 / 1707 / 1708 / 1709 / 171
中国电信162 / 1700 / 1701 / 1702

物联网数据卡

  • 支持数据流量
  • 号码长度 13 位
运营商 [1]号段
中国移动1440X / 1441X / 148XX
中国联通146XX
中国电信1410X

上网卡

  • 支持语音通话(部分) / 短信 / 数据流量
  • 号码长度 11 位
运营商[1]号段语音通话 [2]
中国移动147支持
中国联通145不支持
中国电信149支持
  1. 注意:由于携号转网的在部分地区已经试行,对于成功进行携号转网的用户,手机号段不再能体现其当前所属运营商。
  2. 根据工信部相关文件,145 / 147 / 149 号段允许提供语音通话功能,运营商可以根据用户需要自主决定是否提供语音通话功能。目前 147 / 149 号段已经有支持语音通话的号码卡放出。

POSIX 标准正则表达式

目前正则表达式主要有 PCRE 和 POSIX 两大标准,POSIX 又分为 BRE(grep、sed 等)、GNU BRE(GNU grep、GNU sed 等)、ERE(egrep、awk 等)、GNU ERE(grep –E、GNU awk 等)以及已经被废弃的 SRE 几种流派,彼此之间的语法都有差异。

由于 PCRE 标准被各种常用编程语言广泛支持,所以本项目中的正则表达式都是 PCRE 的。而 POSIX 标准目前主要被各种 Unix-like 系统内置命令所支持,例如常用的 Linux 系统中的 awk, sed 等命令。

由于 Unix-like 系统众多,历史悠久,同一个命令有众多种实现版本(例如 awk 就有 awkgawkmawknawk 等众多实现),并且同一个系统中不同的命令还可能存在使用不同流派的情况,很难做到兼容所有流派和命令,故本文档所列出的正则表达式仅兼容以下两种流派:

  • GNU BRE(gsed – GNU sed)
  • GNU ERE(gawk – GNU awk,ggrep – GNU grep)

如需了解更多,可以阅读维基百科 – Regular expression

正则表达式

匹配所有号码(手机卡 + 数据卡 + 上网卡)

命令正则表达式
GNU ERE^(+?86)?1(3[0-9]{3}|5[01235-9][0-9]{2}|8[0-9]{3}|7([0-35-9][0-9]{2}|4(0[0-9]|1[0-2]|9[0-9]))|9[0-35-9][0-9]{2}|6[2567][0-9]{2}|4((10|4[01])[0-9]{3}|[68][0-9]{4}|[579][0-9]{2}))[0-9]{6}$
GNU BRE^\(+\?86\)\?1\(3[0-9]\{3\}\|5[01235-9][0-9]\{2\}\|8[0-9]\{3\}\|7\([0-35-9][0-9]\{2\}\|4\(0[0-9]\|1[0-2]\|9[0-9]\)\)\|9[0-35-9][0-9]\{2\}\|6[2567][0-9]\{2\}\|4\(\(10\|4[01]\)[0-9]\{3\}\|[68][0-9]\{4\}\|[579][0-9]\{2\}\)\)[0-9]\{6\}$

匹配所有支持短信功能的号码(手机卡 + 上网卡)

命令正则表达式
GNU ERE^(+?86)?1(3[0-9]{3}|5[01235-9][0-9]{2}|8[0-9]{3}|7([0-35-9][0-9]{2}|4(0[0-9]|1[0-2]|9[0-9]))|9[0-35-9][0-9]{2}|6[2567][0-9]{2}|4[579][0-9]{2})[0-9]{6}$
GNU BRE^\(+\?86\)\?1\(3[0-9]\{3\}\|5[01235-9][0-9]\{2\}\|8[0-9]\{3\}\|7\([0-35-9][0-9]\{2\}\|4\(0[0-9]\|1[0-2]\|9[0-9]\)\)\|9[0-35-9][0-9]\{2\}\|6[2567][0-9]\{2\}\|4[579][0-9]\{2\}\)[0-9]\{6\}$

手机卡

匹配所有

命令正则表达式
GNU ERE^(+?86)?1(3[0-9]{3}|5[01235-9][0-9]{2}|8[0-9]{3}|7([235-8][0-9]{2}|4(0[0-9]|1[0-2]|9[0-9]))|9[0-35-9][0-9]{2}|66[0-9]{2})[0-9]{6}$
GNU BRE^\(+\?86\)\?1\(3[0-9]\{3\}\|5[01235-9][0-9]\{2\}\|8[0-9]\{3\}\|7\([235-8][0-9]\{2\}\|4\(0[0-9]\|1[0-2]\|9[0-9]\)\)\|9[0-35-9][0-9]\{2\}\|66[0-9]\{2\}\)[0-9]\{6\}$

匹配中国移动

命令正则表达式
GNU ERE^(+?86)?1(3(4[0-8]|[5-9][0-9])|5[012789][0-9]|7[28][0-9]|8[23478][0-9]|9[578][0-9])[0-9]{7}$
GNU BRE^\(+\?86\)\?1\(3\(4[0-8]\|[5-9][0-9]\)\|5[012789][0-9]\|7[28][0-9]\|8[23478][0-9]\|9[578][0-9]\)[0-9]\{7\}$

匹配中国联通

命令正则表达式
GNU ERE^(+?86)?1(3[0-2]|[578][56]|66|96)[0-9]{8}$
GNU BRE^\(+\?86\)\?1\(3[0-2]\|[578][56]\|66\|96\)[0-9]\{8\}$

匹配中国电信

命令正则表达式
GNU ERE^(+?86)?1(3(3[0-9]|49)[0-9]|53[0-9]{2}|8[019][0-9]{2}|7([37][0-9]{2}|40[0-5])|9[0139][0-9]{2})[0-9]{6}$
GNU BRE^\(+\?86\)\?1\(3\(3[0-9]\|49\)[0-9]\|53[0-9]\{2\}\|8[019][0-9]\{2\}\|7\([37][0-9]\{2\}\|40[0-5]\)\|9[0139][0-9]\{2\}\)[0-9]\{6\}$

匹配中国广电

命令正则表达式
GNU ERE^(+?86)?192[0-9]{8}$
GNU BRE^\(+\?86\)\?192[0-9]\{8\}$

匹配北京船舶通信导航有限公司(海事卫星通信)

命令正则表达式
GNU ERE^(+?86)?1749[0-9]{7}$
GNU BRE^\(+\?86\)\?1749[0-9]\{7\}$

工业和信息化部应急通信保障中心(应急通信)

命令正则表达式
GNU ERE^(+?86)?174(0[6-9]|1[0-2])[0-9]{6}$
GNU BRE^\(+\?86\)\?174\(0[6-9]\|1[0-2]\)[0-9]\{6\}$

虚拟运营商

匹配所有

命令正则表达式
GNU ERE^(+?86)?1(7[01]|6[257])[0-9]{8}$
GNU BRE^\(+\?86\)\?1\(7[01]\|6[257]\)[0-9]\{8\}$

匹配中国移动

命令正则表达式
GNU ERE^(+?86)?1(65[0-9]|70[356])[0-9]{7}$
GNU BRE^\(+\?86\)\?1\(65[0-9]\|70[356]\)[0-9]\{7\}$

匹配中国联通

命令正则表达式
GNU ERE^(+?86)?1(70[4789]|71[0-9]|67[0-9])[0-9]{7}$
GNU BRE^\(+\?86\)\?1\(70[4789]\|71[0-9]\|67[0-9]\)[0-9]\{7\}$

匹配中国电信

命令正则表达式
GNU ERE^(+?86)?1(70[012]|62[0-9])[0-9]{7}$
GNU BRE^\(+\?86\)\?1\(70[012]\|62[0-9]\)[0-9]\{7\}$

物联网数据卡

匹配所有

命令正则表达式
GNU ERE^(+?86)?14([14]0|41|[68][0-9])[0-9]{9}$
GNU BRE^\(+\?86\)\?14\([14]0\|41\|[68][0-9]\)[0-9]\{9\}$

匹配中国移动

命令正则表达式
GNU ERE^(+?86)?14(4[01]|8[0-9])[0-9]{9}$
GNU BRE^\(+\?86\)\?14\(4[01]\|8[0-9]\)[0-9]\{9\}$

匹配中国联通

命令正则表达式
GNU ERE^(+?86)?146[0-9]{10}$
GNU BRE^\(+\?86\)\?146[0-9]\{10\}$

匹配中国电信

命令正则表达式
GNU ERE^(+?86)?1410[0-9]{9}$
GNU BRE^\(+\?86\)\?1410[0-9]\{9\}$

上网卡

匹配所有

命令正则表达式
GNU ERE^(+?86)?14[579][0-9]{8}$
GNU BRE^\(+\?86\)\?14[579][0-9]\{8\}$

匹配中国移动

命令正则表达式
GNU ERE^(+?86)?147[0-9]{8}$
GNU BRE^\(+\?86\)\?147[0-9]\{8\}$

匹配中国联通

命令正则表达式
GNU ERE^(+?86)?145[0-9]{8}$
GNU BRE^\(+\?86\)\?145[0-9]\{8\}$

匹配中国电信

命令正则表达式
GNU ERE^(+?86)?149[0-9]{8}$
GNU BRE^\(+\?86\)\?149[0-9]\{8\}$

评论

请输入你的评论!
请在这里输入你的名字