书写一个正则表达式,该表达式能匹配用户输入的是不是一个手机号(提示: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()

  

posted @ 2023-08-06 20:58  人生努力努力努力就好  阅读(51)  评论(1)    收藏  举报