验证手机和座机号码的正则表达式

前端之家收集整理的这篇文章主要介绍了验证手机和座机号码的正则表达式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在应用中验证电话号码是一个常见的功能,而电话号码包括手机号码和座机号码。今天写这个正则表达式写了比较久,记录在这里,以备后用。本文的一个基本假设:手机号码都是11位,座机号码加上区号也是11位

先科普一下座机区号的规则:点击科普。这是网易博客的一篇博文,简单说来座机区号是历史的产物,我也是看了这里才知道个大概。总结起来我认为可以归纳为这样:北京区号010,后面8位数;其他地区以以0为首位,2~9位次位,其余位为0~9。因此总结起来正则式应该是这样:

(010\d{8})|(0[2-9]\d{9})

而手机号则不一样了,手机号的号段不固定,目前能查阅到的运营商号段见下图:

wKioL1RlubHyBnMYAADFoECuQHo018.jpg

观察可以发现13*系列号段是齐全的,而14开头的只有145、147两个号段,15和18号段除了缺失154、184之外也是齐全的。因此正则表达式列出如下:

(13\d{9})|(14[57]\d{8})|(15[0-35-9]\d{8})|(18[0-35-9]\d{8})

两者连接起来可以验证手机和座机号码,如下:

(010\d{8})|(0[2-9]\d{9})|(13\d{9})|(14[57]\d{8})|(15[0-35-9]\d{8})|(18[0-35-9]\d{8})

上述式子经过在线测试工具初步测试通过,如图:

wKiom1RlvgHhWfqxAADCzjD2j1k324.jpg

这个表达式写得有些长,如果有更简洁的写法还请各位不吝赐教,谢谢!

猜你在找的正则表达式相关文章