排除170/171虚拟号段手机号码正则表达式

张子凡 设计开发 2017-07-19 12:05:15 阅读(6908) 评论(2)

随着对泪雪用户中心的深度开发与功能完善的需求,对于每一个细小的功能子凡我都尽可能的做到极致,但是今天发现这个手机号码的验证总是有一些不尽人意,也在网上找过各种的手机号码正则表达式,经过测试没有一个可以满足需求,所以干脆自己动手来写这个规则了。

RegEx正则表达式

大家都知道手机号码无非就是几个号段,并且都是以数字1开始,网上能找到的正则表达式都是缺胳膊少腿的,要么不能验证170号段,要么就是只要是个11位的数字就能通过,所以就变得特别混乱,而在这次的开发中,子凡决定要排除虚拟运营商号段的手机号码,也就是以170和171开头的手机号码,这样的手机号码并不是实打实的手机卡,所以对于一个用户中心帐户的绑定这样一个虚拟的手机号码属实太假了一点,所以泪雪用户中心改版上线后是绝对不允许这样的情况存在。

正则表达式如下:

1
2
//排除170/171虚拟号段手机号码正则表达式
/^1([3458][0-9]{9}|(7[2-9]{1})[0-9]{8})/

以上正则表达式就满足了上面子凡的吐槽和几乎极致的一个要求,必须以数字1开始,第二位必须是3、4、5、8,后面九位任意数字的号段,如果第二为数字是7,那么就在第三位数排除0、1,后面的八位数字任意。

好啦,基本就这样,看似很简单,其实也很简单,只是没有人像子凡我这样转牛角尖的去把一个东西研究得这么透彻了吧,如果还有比子凡更极致的,可以把第三位数字也做好控制,这样甚至还能直接区分出是移动号段、联通号段或者电信号段了,这里我之所以没有这样做,是因为这样的变动或许还是蛮大的,长远的角度来看就不合适了。

除非注明,否则均为泪雪博客原创文章,转载请以链接形式标明本文地址

本文链接:https://zhangzifan.com/cellphone-number-regex.html

发表评论

  1. 猎乐网
    1楼
    猎乐网 3个月前 (07-20)

    每日一点是什么 广告呢?

    • 张子凡
      回复
      张子凡 3个月前 (07-21)
      回复 @猎乐网 :百度而已,广告的话平台都会被封了