分享一组开源的匹配中国大陆手机号码的正则表达式

开源最前线(ID:OpenSourceTop)

链接:https://github.com/VincentSit/ChinaMobilePhoneNumberRegex

正则表达式,又称正规表示法、常规表示法,正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。


很多程序员都需要用到正则表达式,它可以帮助开发者很好的判断一个字符串是否合法:

  • 比如判断一个手机号的格式是否正确

  • 手机号码的匹配

  • 填写的邮箱格式是否正确


但是呢,国内手机号的匹配还是有点难度,不仅有三大运营商,这三大运营商还经常推出一些新号段,因此判断手机格式还是有点复杂的


今天猿妹和大家分享一组超级全面的匹配大陆手机号的正则表达式——ChinaMobilePhoneNumberRegex


到底有多全面呢?往下看你就知道了,比如:


匹配所有号码(手机卡 + 数据卡 + 上网卡)


^(?:\+?86)?1(?:3\d{3}|5[^4\D]\d{2}|8\d{3}|7(?:[01356789]\d{2}|4(?:0\d|1[0-2]|9\d))|9[189]\d{2}|6[567]\d{2}|4(?:[14]0\d{3}|[68]\d{4}|[579]\d{2}))\d{6}$



匹配所有支持短信功能的号码(手机卡 + 上网卡)


^(?:\+?86)?1(?:3\d{3}|5[^4\D]\d{2}|8\d{3}|7(?:[01356789]\d{2}|4(?:0\d|1[0-2]|9\d))|9[189]\d{2}|6[567]\d{2}|4[579]\d{2})\d{6}$



手机卡


匹配所有


^(?:\+?86)?1(?:3\d{3}|5[^4\D]\d{2}|8\d{3}|7(?:[35678]\d{2}|4(?:0\d|1[0-2]|9\d))|9[189]\d{2}|66\d{2})\d{6}$



匹配中国移动


^(?:\+?86)?1(?:3(?:4[^9\D]|[5-9]\d)|5[^3-6\D]\d|8[23478]\d|(?:78|98)\d)\d{7}$



匹配中国联通


^(?:\+?86)?1(?:3[0-2]|[578][56]|66)\d{8}$



匹配中国电信


^(?:\+?86)?1(?:3(?:3\d|49)\d|53\d{2}|8[019]\d{2}|7(?:[37]\d{2}|40[0-5])|9[19]\d{2})\d{6}$



匹配北京船舶通信导航有限公司(海事卫星通信)


^(?:\+?86)?1749\d{7}$



工业和信息化部应急通信保障中心(应急通信)


^(?:\+?86)?174(?:0[6-9]|1[0-2])\d{6}$



虚拟运营商


匹配所有


^(?:\+?86)?1(?:7[01]|6[57])\d{8}$



匹配中国移动


^(?:\+?86)?1(?:65\d|70[356])\d{7}$



匹配中国联通


^(?:\+?86)?1(?:70[4789]|71\d|67\d)\d{7}$



匹配中国电信


^(?:\+?86)?170[0-2]\d{7}$



物联网数据卡


匹配所有


^(?:\+?86)?14(?:[14]0|[68]\d)\d{9}$



匹配中国移动


^(?:\+?86)?14(?:40|8\d)\d{9}$



匹配中国联通


^(?:\+?86)?146\d{10}$



匹配中国电信


^(?:\+?86)?1410\d{9}$



上网卡


匹配所有


^(?:\+?86)?14[579]\d{8}$



匹配中国移动


^(?:\+?86)?147\d{8}$



匹配中国联通


^(?:\+?86)?145\d{8}$



匹配中国电信


^(?:\+?86)?149\d{8}$


里面还包含了各种规则介绍。



目前,该项目已经在GitHub上获得 3287 个Star,328 个Fork(GitHub地址:https://github.com/VincentSit/ChinaMobilePhoneNumberRegex

推荐↓↓↓
开源最前线
上一篇:程序员如何用一个脚本每天定时给多个女友发微信暖心话 下一篇:阿里巴巴微服务开源生态报告 No.1