手机号码正则表达式匹配

手机号码正则表达式匹配正则表达式匹配手机号码最近在学习正则表达式,在这里写一个手机号码的匹配表达式手机号码的规则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,

大家好,又见面了,我是你们的朋友全栈君。

转载来自:https://blog.csdn.net/weixin_43893679/article/details/108046667

正则表达式匹配手机号码

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

手机号码的规则

  • 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()

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145039.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • AVAudioPlayer播放在线音频文件「建议收藏」

    AVAudioPlayer播放在线音频文件「建议收藏」AVAudioPlayer播放在线音频文件一:原里:AVAudioPlayer是不支持播放在线音频的,但是AVAudioPlayer有一个initWithData的方法;我们可以把在线音频转换为NSdata;然后播放二:如代码:NSData*soundData=[sharedAppSettingsControllergetSoundUrl:defau…

    2022年9月22日
    0
  • 听听各位对Ubuntu的UI的看法

    听听各位对Ubuntu的UI的看法

    2021年8月26日
    50
  • 批处理的for循环_批处理for循环跳出循环

    批处理的for循环_批处理for循环跳出循环转自脚本之家,感谢作者与版主给我这次学习的机会基本格式(这里写的是在命令行里用的格式,如果是在批处理中,需要把其中%再多加个%形成%%):for/参数%变量in(集)do命令(注:上面除中文的以外,其余的是按它的格式要求书写的,大小写都行)参数:FOR分四种参数DLRF,并且有的参数还可附加另外的选项下面会分别介绍变量:(记住如果是在批处理中使用

    2022年10月10日
    0
  • ORACLE分页查询SQL语句(最有效的分页)

    ORACLE分页查询SQL语句(最有效的分页)**一、效率高的写法**1.无ORDERBY排序的写法。(效率最高)(经过测试,此方法成本最低,只嵌套一层,速度最快!即使查询的数据量再大,也几乎不受影响,速度依然!)SELECT*FROM(SELECTROWNUMASrowno,t.*FROMemptWHEREhire_dateBETWEENTO_DATE…

    2022年4月29日
    530
  • 命令解压war包_tomcat war包不解压

    命令解压war包_tomcat war包不解压把java程序打成war包。起先用zip命令打包,起先可以用,后来却无法使用。今天找到一个更好的办法。用jar命令,前提是要安装jdk。操作:1、把当前目录下的所有文件打包成game.warjar-cvfM0game.war./-c创建war包-v显示过程信息-f-M-0这个是阿拉伯数字,只打包不压缩的意思解压game.warjar-xvfgame.war解压到当前目录…

    2022年10月24日
    0
  • icmp 报文详解

    icmp 报文详解以下内容转载自: http://blog.csdn.net/tigerjibo/article/details/7356936写的很好的icmp报文详解:一.概述:1.   ICMP允许主机或路由报告差错情况和提供有关异常情况。ICMP是因特网的标准协议,但ICMP不是高层协议,而是IP层的协议。通常ICMP报文被IP层或更高层协议(

    2022年4月29日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号