正则表达式

当前位置:正则表达式 > 正则

手机号码的正则表达式

最近在学习正则表达式,在这里写一个手机号码的匹配表达式

手机号码的规则

  • 11位,第一位一定是1
  • 第二位和第三位根据不同运营商的号码段有所区别,只有有限的组合是合法的手机号码
  • 后8位可以是任意数字

表达式


 
  1. ^1(3[0-9]|5[0-3,5-9]|7[1-3,5-8]|8[0-9])\d{8}$
  2.  
  3. 解释:
  4. ^:代表起始,即手机号码只能以1为开头
  5. 3[0-9]:代表手机号码第二位可以是3,第三位可以是0-9中任意一个数字
  6. 5[0-3,5-9]:代表手机号码第二位也可以是5,第三位是0-3和5-9中的任意一个数字
  7. 在这里,以3开头的,以5开头的,以及以8开头的三种情况,我们用“|”来将他们隔开
  8. \d:匹配一个数字字符,等价于 [0-9]
  9. $:终止符,代表不可以再有第12位了

测试用例


 
  1. import re,sys#导入正则模块
  2.  
  3. def example():
  4. phone_numbers_true=['13912345678','15912345678','17212345678','18212345678']
  5. phone_numbers_false=['124344534543','4454543534','1234521345']
  6. for i in phone_numbers_true:
  7. ret=re.match(r"^1(3[0-9]|5[012356789]|7[1235678]|8[0-9])\d{8}$",i)
  8. if not ret:
  9. print("测试用例"+i+"未通过校验,程序终止,该正则表达式不正确!")
  10. sys.exit()
  11. for i in phone_numbers_false:
  12. ret=re.match(r"^1(3[0-9]|5[012356789]|7[1235678]|8[0-9])\d{8}$",i)
  13. if ret:
  14. print("测试用例"+i+"未通过校验,程序终止,该正则表达式不正确!")
  15. sys.exit()
  16. print("全部测试用例通过")
  17.  
  18. example()

 


相关文章
苏ICP备2022026517号-2  |   苏公网安备 32081202000316号
淮安先皓网络科技有限公司 © 版权所有  联系我们