书写一个正则表达式,该表达式能匹配用户输入的是不是一个手机号(提示:1、开头数字为1;2、总长为11;3、第2位 可能是 3,5,6,7,8这几个数字 )。
import re
# 分析:
# 手机号都为11位,必须限定匹配的数字的位数,通过$来限定以9位数字结尾,
# 手机号都以1开头,通过^1限定以1开头,
# 手机号第二位貌似只有3,5,6,7,8,这几个数字,所以通过[3,5,6,7,8]来匹配其中的任一数字,
# 最后{9}匹配9个/d
第一种编写方法:
def check(num): # 判断手机号的方法
if num.isdigit() and re.search(r'^1[3,5,6,7,8]\d{9}$',num):
print('手机号为'+num)
else:
print('输入错误,重新输入')
while True:
n=input('请输入你的手机号:')
check(n)
代码运行截图:


第二种编写方法:
# 分析:
# 手机号都为11位,必须限定匹配的数字的位数,通过$来限定以9位数字结尾, # 手机号都以1开头,通过^1限定以1开头, # 手机号第二位貌似只有3,5,6,7,8,这几个数字,所以通过[3,5,6,7,8]来匹配其中的任一数字, # 最后{9}匹配9个/def phone_num()
def phone_num():
phone=input('请输入手机号码:')
pattern=re.compile(r'^1[3,5,6,7,8]\d{9}$') # 对象
num=pattern.match(phone)
if num :
print('ok,你的手机号位:'+num.group())
# 想补充一个输入正确程序终止 这里写break 不对
else:
print('error')
while True :
if __name__ == '__main__':
phone_num()

浙公网安备 33010602011771号