目前大家开发的网站,应该都少不了填手机号验证的功能了吧,有短信验证的怕用户浪费短信量,没有短信验证的又怕用户乱填。
这次推荐的项目是目前最全的中国大陆手机号码的匹配正则表达式,虽然还是没法防乱填,但是用来做分类,或者识别运营商多少还是有点用处的。
VincentSit/ChinaMobilePhoneNumberRegex
这个项目的维护性很好,2014年12月发布的,跟随工信部文件做更新,目前细化的分类已经很完善了。
包含哪些号段
作者真的很细心,项目包含如下内容,各位开发者各取所需就行:
匹配所有手机号码;
匹配所有支持”短信功能“的号码;
匹配中国移动、中国联通、中国电信、海事卫星通信、工信部应急通信号码;
匹配移动联通电信虚拟运营商号码;
匹配物联网数据卡号码;
匹配上网卡号码;
规则
不只是眼花缭乱的表达式,作者也很贴心地把规则说的很清楚了。
看到这么多号段,不禁感叹这么多年已经扩展地这么多了,凭借以往的规则,怕是跟不上变化。
为什么要用这个项目
用这个项目最大的好处就是避免自己维护规则的麻烦。
毕竟,最近一次扩展新号段是最近12月份的事:
所以自己不想费心,就关注项目,有更新自动邮件提醒,省事省心!
总结
目前最大的问题是,全国携号转网开通以后,通过号段来匹配变得不再靠谱,能解决这个问题的只能是通讯商的网关识别。离线识别没有任何方案。
另一个问题,虚拟运营商的识别只能匹配通讯主体(移动、联通、电信),没有办法匹配出是哪个运营主体(小米、阿里、腾讯)。
因此不建议在生产环境中使用,具体能想到的使用场景,是对结果精度不高的数据统计,和历史数据的分类归档。