Python手机号合法性判断(列表和正则)
2023-04-18 14:15:13 时间
Python手机号合法性判断(列表和正则)
注意:这里不对地区编码(第4-7位)和用户号码(第8-11位)进行合法性判断!
需要进行哪些判断:
1. 号码是否为11位
2. 号码是否全为数字
3. 号段(前三位)是否合法
手机号段:
移动号段:139 138 137 136 134 135 147 150 151 152 157 158 159 172 178 182 183 184 187 188 195 197 198
联通号段: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
这里介绍了两种实现方法,一是用列表来实现,二是用正则表达式来实现
-
列表实现
这种方法对于像我这样的初学者来说很友好,简单易懂
# 号段列表
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前三位是否在合法号段列表内
if len(phone) == 11 and 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("手机号码非法!")
更多正则表达式的实现可访问菜鸟教程
如果您喜欢这篇文章就请点赞收藏噢!
如果您发现错误或不足,欢迎在评论区指出噢!
相关文章
- Flink 1.14 新特性预览
- API网关:第8层网络
- Python 开发人员正在为医疗保健创建颠覆性的 AI 应用程序
- 如何在Python中创建和使用虚拟环境
- 常用的分布式事务都有哪些?我该用哪个?
- 在 Python中处理大型机器学习数据集的简单方法
- 六个优秀的可解释AI (XAI)的Python框架推荐
- Python虚拟环境很简单,看完你就会了
- 总结几个简单好用的Python人脸识别算法
- 又是好兄弟 爱立信与三星和解专利纠纷
- Flink分布式程序的异常处理
- 好用的 Python 虚拟环境,没有之一
- 为什么TensorFlow可以做机器学习开发?
- 记一次beego通过go get命令后找不到bee.exe的坑
- 指定Task任务顺序执行
- CompletionService 使用小结
- Win环境安装Protobuf 2.0 版本
- shell 同时执行多任务下载视频
- Seata 分布式事务解决方案及特点
- zookeeper 使用api 进行节点增删改查及实现简易的配置中心