分享一个我维护了几年的匹配国内手机号码的正则表达式列表

2019-01-07 14:16:17 +08:00
 vincentxue



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

列了一些常用的情况,例如匹配所有号码、所有支持短信功能的号码,包括手机卡、数据卡( IoT )和上网卡以及细分运营商匹配等。

初衷是由于国家一直在放出和使用新的号段,有些使用新的号段的用户无法通过手机号码的正则验证,网上很多正则并不能及时地更新,去找了下开源的项目也没人做这个事,我就自己写了一个。

最近更新支持了最新的号段,做了有限的测试,发到这里一是考虑自身水平有限,请各位大佬提提建议,找找 bug,二是广而告之,希望能帮助到有需要的同学。

关于测试方面,我的设想是想给每个常用语言做一个开源库包含这些正则,该语言相关的测试会在库源码里做。这样使用起来就可以直接引用库封装好的代码,更省事一些。但是我实现了一个语言后发现这是个大坑,得慢慢填。

需要说明的是因为考虑到方便使用的原因,有些正则其实并不是传统意义上极致优化的,可以根据自身需要去修改。例如不需要匹配国家码,可以去掉匹配国家码的那一段。但除非匹配量非常巨大,否则这个性能差别是可以忽略的。我在我机器上用 PHP 7 测了一下匹配一百多万行的手机号码,性能差距还是能接受的。
7846 次点击
所在节点    分享创造
61 条回复
vincentxue
2019-01-07 14:45:59 +08:00
点不点 Star 无所谓,但建议使用或需要关注的朋友们做一下 Release Only Watch,以后每次更新都会 Release 一个版本来触发通知,这样大家就能及时更新。
dezhou9
2019-01-07 14:48:35 +08:00
这个用来识别非手机号可以的,star
dezhou9
2019-01-07 14:49:59 +08:00
其实手机号前面的+也可以是 00,这个谷歌自己补一下 k
STGing
2019-01-07 14:50:30 +08:00
已 star,好东西!作者费心了。
vincentxue
2019-01-07 14:58:37 +08:00
@dezhou9 这个如果有需求可以加一个条件,我是看大家都是用+所以我也从众了。
@STGing 谢谢哈!
Lax
2019-01-07 14:59:29 +08:00
早上看到个消息要启用 165 号段
lion9527
2019-01-07 15:03:17 +08:00
我个人感觉如果有短信验证码,则不必过于拟合。
直接泛化可能工作更轻松,比如 1 开头,11 位数即可。
lizhenda
2019-01-07 15:11:16 +08:00
不错不错,有心了!
yuewolf
2019-01-07 15:12:02 +08:00
素质二连,楼主有心了。
deathscythe
2019-01-07 16:03:02 +08:00
哇卡卡, star 了, 不错的
dezhou9
2019-01-07 16:15:33 +08:00
@lion9527 规则上细化不算拟合。作者未来支持新号段发现,才有拟合概念
justfindu
2019-01-07 16:30:55 +08:00
好久前就用了 好用!
ResidualWind
2019-01-07 16:35:25 +08:00
已 star, 感谢作者
kingsleydon
2019-01-07 16:35:46 +08:00
试用了一下,已 star ~
usapla
2019-01-07 16:48:46 +08:00
该说不说,楼主真把我们当亲弟弟了
GuryYu
2019-01-07 16:49:08 +08:00
楼主这个图是用什么工具生成的呀
Removable
2019-01-07 17:01:14 +08:00
咦,不知道什么时候已经 star 了
ShundL
2019-01-07 17:06:59 +08:00
这是高手,已 star
fmumu
2019-01-07 17:09:43 +08:00
可以搞个动态生成器,每个人的需求都不一样的,根据选择的条件如:电信 /联通+iot 来生成正则表达式
mwiker
2019-01-07 17:10:55 +08:00
已 star,可以增加多个开发语言的版本。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/524624

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX