目前国内网络上匹配手机号码的正则表达式很多都无法匹配最新的号码段,影响用户操作,故在此分享一个正则表达式来匹配中国大陆的手机号码段。
电信
2G/3G号段(CDMA2000网络)133、153、180、181、189
4G号段 177、173
联通
2G号段(GSM网络)130、131、132、155、156
3G上网卡145
3G号段(WCDMA网络)185、186
4G号段 176、185移动
2G号段(GSM网络)有134x(0-8)、135、136、137、138、139、150、151、152、158、159、182、183、184。
3G号段(TD-SCDMA网络)有157、187、188
3G上网卡 147
4G号段 178、184卫星通信 1349
以上内容来自手机号码(百度百科)
虚拟运营商号码段:
电信 1700、1701、1702
联通 1707、1708、1709、171
移动 1705
以上内容来自170号段(百度百科)
整理如下:
130、131、132、133、134、135、136、137、138、139
150、151、152、153、155、156、157、158、159
173、176、177、178
180、181、182、183、184、185、186、187、188、189
171、1700、1701、1702、1705、1707、1708、1709
正则表达式为:
未转义:(^(13\d|15[^4\D]|17[13678]|18\d)\d{8}|170[^346\D]\d{7})$
。
已转义:(^(13\\d|15[^4\\D]|17[13678]|18\\d)\\d{8}|170[^346\\D]\\d{7})$
。
默认 14x 上网卡号段为无效号码,如果希望其为有效号码,则正则表达式为:
未转义:(^(13\d|14[57]|15[^4\D]|17[13678]|18\d)\d{8}|170[^346\D]\d{7})$
。
已转义:(^(13\\d|14[57]|15[^4\\D]|17[13678]|18\\d)\\d{8}|170[^346\\D]\\d{7})$
。
###版本更新
2016.4.5
增加 171 号段支持,分离 14x 号段匹配,完善虚拟运营商号段匹配。
2014.12.19
初次发布。