-
手机号码的正则表达式
- 11位,第一位一定是1
- 第二位和第三位根据不同运营商的号码段有所区别,只有有限的组合是合法的手机号码
- 后8位可以是任意数字
^1(3[0-9]|5[0-3,5-9]|7[1-3,5-8]|8[0-9])\d{8}$
解释:
^:代表起始,即手机号码只能以1为开头
3[0-9]:代表手机号码第二位可以是3,第三位可以是0-9中任意一个数字
5[0-3,5-9]:代表手机号码第二位也可以是5,第三位是0-3和5-9中的任意一个数字
在这里,以3开头的,以5开头的,以及以8开头的三种情况,我们用“|”来将他们隔开
\d:匹配一个数字字符,等价于 [0-9]
$:终止符,代表不可以再有第12位了
import re,sys#导入正则模块
def example():
phone_numbers_true=['13912345678','15912345678','17212345678','18212345678']
phone_numbers_false=['124344534543','4454543534','1234521345']
for i in phone_numbers_true:
ret=re.match(r"^1(3[0-9]|5[012356789]|7[1235678]|8[0-9])\d{8}$",i)
if not ret:
print("测试用例"+i+"未通过校验,程序终止,该正则表达式不正确!")
sys.exit()
for i in phone_numbers_false:
ret=re.match(r"^1(3[0-9]|5[012356789]|7[1235678]|8[0-9])\d{8}$",i)
if ret:
print("测试用例"+i+"未通过校验,程序终止,该正则表达式不正确!")
sys.exit()
print("全部测试用例通过")
example()
最近在学习正则表达式,在这里写一个手机号码的匹配表达式
手机号码的规则
表达式
测试用例