正则匹配判断电话号码是否真实、几连号、几顺序号
正则匹配
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("电话号码不为虚拟号")
来源:CSDN
作者:Desire。
链接:https://blog.csdn.net/weixin_44698389/article/details/103996613