匹配所有号码(手机卡 + 数据卡 + 上网卡)
^(?:+?86)?1(?:3d{3}|5[^4D]d{2}|8d{3}|7(?:[01356789]d{2}|4(?:0d|1[0-2]|9d))|9[189]d{2}|6[567]d{2}|4(?:[14]0d{3}|[68]d{4}|[579]d{2}))d{6}$
匹配所有支持短信功能的号码(手机卡 + 上网卡)
^(?:+?86)?1(?:3d{3}|5[^4D]d{2}|8d{3}|7(?:[01356789]d{2}|4(?:0d|1[0-2]|9d))|9[189]d{2}|6[567]d{2}|4[579]d{2})d{6}$
手机卡
匹配所有
^(?:+?86)?1(?:3d{3}|5[^4D]d{2}|8d{3}|7(?:[35678]d{2}|4(?:0d|1[0-2]|9d))|9[189]d{2}|66d{2})d{6}$
匹配中国移动
^(?:+?86)?1(?:3(?:4[^9D]|[5-9]d)|5[^3-6D]d|8[23478]d|(?:78|98)d)d{7}$
匹配中国联通
^(?:+?86)?1(?:3[0-2]|[578][56]|66)d{8}$
匹配中国电信
^(?:+?86)?1(?:3(?:3d|49)d|53d{2}|8[019]d{2}|7(?:[37]d{2}|40[0-5])|9[19]d{2})d{6}$
匹配北京船舶通信导航有限公司(海事卫星通信)
^(?:+?86)?1749d{7}$
工业和信息化部应急通信保障中心(应急通信)
^(?:+?86)?174(?:0[6-9]|1[0-2])d{6}$
虚拟运营商
匹配所有
^(?:+?86)?1(?:7[01]|6[57])d{8}$
匹配中国移动
^(?:+?86)?1(?:65d|70[356])d{7}$
匹配中国联通
^(?:+?86)?1(?:70[4789]|71d|67d)d{7}$
匹配中国电信
^(?:+?86)?170[0-2]d{7}$
物联网数据卡
匹配所有
^(?:+?86)?14(?:[14]0|[68]d)d{9}$
匹配中国移动
^(?:+?86)?14(?:40|8d)d{9}$
匹配中国联通
^(?:+?86)?146d{10}$
匹配中国电信
^(?:+?86)?1410d{9}$
上网卡
匹配所有
^(?:+?86)?14[579]d{8}$
匹配中国移动
^(?:+?86)?147d{8}$
匹配中国联通
^(?:+?86)?145d{8}$
匹配中国电信
^(?:+?86)?149d{8}$
在线测试/调试
https://regex101.com
https://regexr.com
https://www.debuggex.com (PCRE 在线视觉化)
规则
手机卡 - 基础运营商
- 支持语音通话 / 短信 / 数据流量
- 号码长度 11 位
运营商 [1] 号段
手机卡 - 虚拟运营商
- 支持语音通话 / 短信 / 数据流量
- 号码长度 11 位
运营商 [1] 号段
物联网数据卡
- 支持数据流量
- 号码长度 13 位
运营商 [1] 号段
上网卡
- 支持语音通话(部分) / 短信 / 数据流量
- 号码长度 11 位
资料来源:https://github.com/VincentSit/ChinaMobilePhoneNumberRegex
由于手机号码正则表达式具有时效性,所以当任何正则表达式出现变更时,都会发布一个新版本来触发 GitHub 的邮件系统通知所有观察了本项目的用户。如果您希望在任何正则表达式出现变更时及时得到通知,请观察本项目。
现在代码里我都不写这种正则去检验手机号了,鬼知道什么时候加个号段,还匹配个锤子,直接1开头,11位完事[捂脸]