Python手机号合法性判断(列表和正则)
注意:这里不对地区编码(第4-7位)和用户号码(第8-11位)进行合法性判断!
需要进行哪些判断:
1. 号码是否为11位
2. 号码是否全为数字
3. 号段(前三位)是否合法
手机号段:
移动号段:139138137136134135147150151152157158159172178182183184187188195197198
联通号段:130131132140145146155156166185186175176196
电信号段:133149153177173180181189191193199
虚拟运营商号段:162165167170171
这里介绍了两种实现方法,一是用列表来实现,二是用正则表达式来实现
- 列表实现这种方法对于像我这样的初学者来说很友好,简单易懂
# 号段列表
list1 =[139,138,137,136,134,135,147,150,151,152,157,158,159,172,178,130,131,132,140,145,146,155,156,166,185,186,175,176,196,133,149,153,177,173,180,181,189,191,193,199,162,165,167,170,171]# 键入手机号码
phone =input("请输入11位手机号码")# len(phone) == 11,判断phone是否为11位# phone.isnumeric(),判断phone是否全为数字# int(phone[:3]) in list1,判断phone前三位是否在合法号段列表内iflen(phone)==11and phone.isnumeric()and(int(phone[:3])in list1):print("手机号码合法!")else:print("手机号码非法!")
- 正则表达式实现正则表达式强大、便捷、高效,但掌握起来有一定难度
import re
phone =input("请输入11位手机号码:")
pattern = re.compile(r'^(13[0-9]|14[0|5|6|7|9]|15[0|1|2|3|5|6|7|8|9]|'
r'16[2|5|6|7]|17[0|1|2|3|5|6|7|8]|18[0-9]|'
r'19[1|3|5|6|7|8|9])\d{8}$')if pattern.search(phone):print("手机号码合法!")else:print("手机号码非法!")
更多正则表达式的实现可访问菜鸟教程
如果您喜欢这篇文章就请点赞收藏噢!
如果您发现错误或不足,欢迎在评论区指出噢!
版权归原作者 是猫南北 所有, 如有侵权,请联系我们删除。