美文网首页
全网最全的正则表达式

全网最全的正则表达式

作者: 剑老师 | 来源:发表于2021-09-10 16:01 被阅读0次

    本文首发自公众号【一个老码农】

    文中的\d、\W等双反斜杠转义的适用于oc、swift、java等语言。而js、php、go等语言需要用单反斜杠,即\d、\W。而\d或\d与0-9等价,均代表数字可相互替换。关于正则基础语法,可自行查询。下面我来介绍下工作中常用的正则表达式。

    • 手机号

      ^1(3|5|7|8)[0-9]{9}$
      

    解释:
    手机号以13、15、17、18开头,后面则是9位0-9的数字。其中[0-9]也可以改为[\d]。{9}代表后9位

    • 邮箱

      ^[a-zA-Z_-\\d]+@[a-zA-Z_-\\d]+(\\.[a-zA-Z\\d_-]+)+$
      

    解释:
    邮箱一般格式为

    1. xxxx@xxx.xxx,如:123456789@qq.com
    2. xxx@xxx.xxx.xx 如 abc@ddd.com.cn

    有些邮箱只允许英文和字母,而有些邮箱允许包含下划线"_"和杠"-"

    ^[a-zA-Z_-\d]+ 以代表以字母、"_"、"-"、数字开头,后面的"+"代表一个字条符及以上

    @[a-zA-Z_-\d]+ 代表@后面的字符以字母、"_"、"-"、数字组成,后面的"+"代表一个字条符及以上

    (\.[a-zA-Z0-9_-]+) 代表"."后面的字符以字母、数字、"_"、"-"组成,最后的"+"代表一个字符以上

    最后面的"+"号代表 括号里面的.xxx,可能有多个,如.com.cn

    邮箱后缀一般由两位或三位字符组成,如: .com,.net,.cn,.me等,所以邮箱正则也可以改成这样:

    ^[a-zA-Z_-\d]+@[a-zA-Z_-\d]+(\.[a-zA-Z\d_-]{2,3})+$

    • 网址

    网址一般以http://或https://开头,所以正则可以这样写:

    ^(http(s)?:\\/\\/)
    

    解释:(s)? 代表 “s”长度为0~1,也就是说s可有可无。

    后面两个\/\/,代表"//",因为“/”需要转义,在oc、swift、java等语言中需要两个反斜杠,js、php等语言只需要一个反斜杠。

    更加严谨的网址正则,如域名的匹配、query参数匹配,在此就不做介绍了。

    • 密码强度

    1.密码为8-32位,且必须包含大写字母、小写字母、数字、特殊符号(包含下划线)

    ^(?![A-Za-z0-9]+$)(?![a-z0-9\\W_]+$)(?![A-Za-z\\W_]+$)(?![A-Z0-9\\W_]+$)[a-zA-Z0-9\\W_]{8,32}$
    

    解释:^(?![A-Za-z0-9]+)(?![a-z0-9\\W_]+)(?![A-Za-z\W_]+)(?![A-Z0-9\\W_]+) 代表排除只包含一种字符的情况、只包含两种字符的情况、只包含三种字符的情况

    其中(?![A-Za-z0-9]+$) 排除大写字母、小写字母、数字三种字符的任意组合方式

    ?![a-z0-9\W_]+$)排除小写字母、数字、特殊字符 三种的任意组合方式

    (?![A-Za-z\W_]+$) 排除大写字母、小写字母、特殊字符三种的任意组合方式

    (?![A-Z0-9\W_]+$) 排除大写字母、数字、特殊字符三种的任意组合方式

    [a-zA-Z0-9\W_] 代表字符串由小写字母、大写字母、数字、特殊符号和下划线组成

    排除任意三种方式组合的情况后,只剩下四种字符都有的情况

    {8,32}代表字符串为8至32位

    1. 密码为8-32位,且至少包含大写字母、小写字母、数字、特殊符号(包含下划线)中的三种
    ^(?![a-zA-Z]+$)(?![A-Z\\d]+$)(?![A-Z_\\W]+$)(?![a-z\\d]+$)(?![a-z_\\W]+$)(?![\\d_\\W]+$)[a-zA-Z\\d_\\W]{8,32}$
    

    解释:代表排除只包含大写字母、小写字母、数字、特殊符号中的一种和两种的情况,包含三种、四种的情况则匹配通过

    其中 (?![a-zA-Z]+$) 代表排除大写字母、小写字母其中一种或两中组合的情况

    (?![A-Z\d]+$) 代表排除大写字母、数字其中一种或两中的情况,其中\d可以用0-9代替

    (?![A-Z_\W]+$) 代表排除大写字母、特殊字符一种或两种组合的情况

    (?![a-z\d]+$)代表排除小写字母和数字一种或两种组合的情况

    (?![a-z_\W]+$)代表排除小写字母、特殊字符一种或两种组合的情况

    (?![\d_\W]+$)代表排除字母、特殊字符一种或两种组合的情况

    一种和两种组合的情况都排除之后,就剩下三种和四种组合的情况了

    3.密码为8-32位,且至少包含大写字母、小写字母、数字、特殊符号(包含下划线)中的两种

    ^(?![a-z]+$)(?![A-Z]+$)(?![\\W_]+$)(?![\\d]+$)[a-zA-Z\\d_\\W]{8,32}$
    

    解释:与上面两个逻辑类似,排除所有单一字符情况后,剩下的就是两种组合、三种组合、四种组合的情况。

    • 包含某类字符

    1.包含大写字母匹配

    (?=.*[A-Z])
    

    2.包含小写字母匹配

    (?=.*[a-z])
    

    3.包含特殊字符或下划线匹配

    //如果不匹配下划线可将后面的"_"去掉
    (?=.*[\\W_])
    
    1. 包含数字匹配
    (?=.*[\\d])
    

    原文地址

    相关文章

      网友评论

          本文标题:全网最全的正则表达式

          本文链接:https://www.haomeiwen.com/subject/jvqnwltx.html