手机号码正则表达式(含虚拟运营商)
之前有篇文章记录了自己常用的几个正则表达式,本来想把这个表达式也给写进去了,结果想想,还是独立出来,然后也丰富一下吧。
当下,越来越多的电商产品注册的时候都是采用手机号码进行注册的,这样就要求我们队注册时候的手机号进行合理性的检测。可是,随着移动通信的发展,各大运营商的手机号码段也越来
越多,让人眼花缭乱。甚至有些开发者在对手机号码进行校验的时候,采用的是以1开头的11位号码即可,这样子,显然并不能达到我们想要的效果。在此,附上最近在网上查找到的各大运营商
手机号码段的资料,和一些用于校验的正则表达式。
国内各大运营商手机号码段的分配如下:
中国移动:134(0-8)、135、136、137、138、139、150、151、152、157(TD)、158、159、182、183、184、187、178、188、147(数据卡号段) 、1705(虚拟运营商移动号段)
中国联通:130、131、132、145(数据卡号段)155、156、176、185、186、1709(虚拟运营商联通号段)
中国电信:133、153、177、180、181、189、(1349卫通)、1700(虚拟运营商电信号段)
由上可得,目前国内手机号码的正则表达式大致为: ^1(([3,5,8]\d{9})|(4[5,7]\d{8})|(7[0,6-8]\d{8}))$
其中,各大运营商的手机号段正则表达式为:
中国移动:^1(34[0-8]|705|(3[5-9]|5[0127-9]|8[23478]|78)\d)\d{7}$
中国联通:^1((3[0-2]|45|5[56]|8[56])\d{8}|709\d{7})$
中国电信:^1((33|53|8[019])[0-9]|349|700)\d{7}$
当然,也有些朋友可能认为,接下来可能越来越多的手机号网段,这样子就需要不断的改,个人认为,这个改动应该在接受范围,毕竟这比起那些坑爹的bug好控制多了
以上是网上查找到的数据,可能有错,还望指正