正则匹配判断电话号码是否真实、几连号、几顺序号

拈花ヽ惹草 提交于 2020-01-15 23:56:00

正则匹配判断电话号码是否真实、几连号、几顺序号

正则匹配

1.主要是从输入的字符串中匹配出满足条件的字符串,即判断是否为电话号码。
2.电话号码的连号和顺序号判断,主要是通过正则匹配式将相应的字符串匹配出来,再根据匹配出的字符串长度去判断其为几连号、几顺序号。
3.各大运营商截止到目前的号段:
移动号段:134(0-8)、135、136、137、138、139、147、148
联通号段:130、131、132、145、146、155、156、166、175、176、185、186
电信号段:133、134(9)、149、153、173、174、177、180、181、189、191、193、199
虚拟号:170、171、162、165、167
添加的新号段: 150、151、152、157、158、159、172、178、182、183、184、187、188、198

1.判断是否为真实的电话号码

此处根据目前三大运营商所存在的电话号段以及电话号码的格式(必须为11位数字)去判断字符串是否为真实的电话号码。
正则匹配式:phone_pat = re.compile(’^1((3[\d])|(4[5-9])|(5[0-35-9])’
‘|(6[6])|(7[2-8])|(8[\d])|(9[1389]))\d{4}\d{4} *$’)

import re
while True:
    phone = input("请输入电话号码:")
    phone_pat = re.compile('^1((3[\d])|(4[5-9])|(5[0-35-9])'
                           '|(6[6])|(7[2-8])|(8[\d])|(9[1389]))\d{4}\d{4} *$')
    res1 = re.search(phone_pat, phone)
    if res1:
        print(res1.group())
    else:
        print("电话号码错误")

2.是否为顺序号(判断4-9位顺序号)

如1234、4321等(得首先判断其为电话号码的基础之上判断是否为顺序号)
正则匹配式:phone_sequence= re.compile(’(?: (?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9))’
‘{3,}|(?:9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3(?=2)|2(?=1)|1(?=0)){3,})\d’)
判断为几顺序号:len(res2.group())

import re
while True:
    phone = input("请输入电话号码:")
    phone_sequence= re.compile('(?: (?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9))'
                       '{3,}|(?:9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3(?=2)|2(?=1)|1(?=0)){3,})\d')  

    res2= re.search(phone_sequence, phone)
    if res2:
        print(("电话号码%d顺序号" % len(res2.group())))
    else:
        print("电话号码不为顺序号")

3.是否为连号(判断4-9位连号)

如1111、99999等(得首先判断其为电话号码的基础之上判断是否为连号)
正则匹配式:phone_repeat = re.compile(r’(\d)\1{3,}’)
判断为几连号:len(res3.group())

import re
while True:
    phone = input("请输入电话号码:")
    phone_repeat = re.compile(r'(\d)\1{3,}')
    res3= re.search(phone_repeat, phone)
    if res3:
        print(("电话号码%d连号" % len(res3.group())))
    else:
        print("电话号码不为连号")

4.是否为虚拟号

目前所存在的虚拟号为162、165、167、170、171 正则匹配式:phone_vir = re.compile(’^1((6[257])|(7[01]))\d{8}$’)

import re 
while True:
     phone = input("请输入电话号码:")
     phone_vir = re.compile('^1((6[257])|(7[01]))\d{8}$') 
     res4= re.search( phone_vir, phone)     
     if res4:         
         print("电话号码为虚拟号" % res4.group())    
     else:         
         print("电话号码不为虚拟号") 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!