前言
开始在CSDN写文章只是为了记录自己在学习中所遇到过的坑,以便之后再遇到时有法可查。
学习语言:Python
模块:正则表达式
代码:手机号验证(包含当前移动、联通、电信运营商目前的所有号段)
踩坑人:炽空羽
踩坑时间:2019.06.28
问题状态:已解决
正文
在学习Python正则表达式的过程中,按照视频学习敲打代码,却无法正常运行,满百度的找问题的解决方案,结果也只有在CSDN里发现一个和我有过同样问题的博主@tianbwin2995 的相关技术文章1,但是和我的情况不大相同。尝试过卸载、更新pycharm,更换编译器等操作,都以失败告终。
先粘贴出我有问题的代码:
// An highlighted block
import re
def checkCellphone(cellphone):
reg = "^(13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\d{8}$"
# regex = "^((13[0-9])|147|(15([0-3]|[5-9])|(17[3,6,7,8])|(18[0-9])|(19[1,9]))\d{8}$"
result = re.findall(reg, cellphone)
if result:
print("匹配成功")
return True
else:
print("匹配失败")
return False
if __name__ == "__main__":
cellphone = 13509561674
checkCellphone(cellphone)
咋一看好像没什么问题,目前能知道的就是小括号出了问题,因此,在技术群里的大佬指引下,找到了问题缘由:在正则表达式里多写了一个小括号,导致小括号不匹配。正确代码如下:
// An highlighted block
import re
def checkCellphone(cellphone):
#reg = "^(13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9])\d{8}$"
reg = "^((13[0-9])|147|15([0-3]|[5-9])|(17[3,6,7,8])|(18[0-9])|(19[1,9]))\d{8}$"
result = re.findall(reg, cellphone)
if result:
print("匹配成功")
return True
else:
print("匹配失败")
return False
if __name__ == "__main__":
cellphone = "13109561674"
checkCellphone(cellphone)
```