正则表达式 一篇就搞定

正则表达式:
    ^: 指定字符串开始
    $: 指定字符串结束

    快捷方式:
        \d  匹配1个 数字
        \w  匹配1个 字母,数字,下划线
        \s  匹配1个 空白字符
        \b  不会消耗任何字符只匹配一个位置,常用于匹配单词边界
        .   匹配除了换行符以外的任何单个字符

    取反快捷方式:
        \W  匹配任意不是字母,数字,下划线 的字符
        \D  匹配任意非数字的字符
        \S  匹配任意不是空白符的字符
        \B  匹配不是单词开头或结束的位置

    区间:
        [0-9]
        [a-z]
        [A-Z]
        [A-Za-z]
        [abs] a b s 中的一个

    量词:
        *     0个或者多个
        +     一个或者多个
        ?     重复零次或一次
        {N}   重复n次
        {M,N} 重复n到m次
        {,N}
        {M,}  重复M次或更多次

    懒惰限定符:
      "*?"  重复任意次,但尽可能少重复
      如 "acbacb"  正则  "a.*?b" 只会取到第一个"acb" 原本可以全部取到但加了限定符后,只会匹配尽可能少的字符 ,而"acbacb"最少字符的结果就是"acb"

      "+?"  重复1次或更多次,但尽可能少重复
      与上面一样,只是至少要重复1次

      "??"  重复0次或1次,但尽可能少重复
      如 "aaacb" 正则 "a.??b" 只会取到最后的三个字符"acb"

      "{n,m}?" 重复n到m次,但尽可能少重复
        如 "aaaaaaaa"  正则 "a{0,m}" 因为最少是0次所以取到结果为空

      "{n,}?"  重复n次以上,但尽可能少重复
        如 "aaaaaaa"  正则 "a{1,}" 最少是1次所以取到结果为 "a"


    分组:
        多个字符进行重复怎么办呢?此时我们就要用到分组,我们可以使用小括号()来指定要重复的子表达式

        捕获组:
            捕获的内容是被存储在内存中,可供以后使用,比如反向引用就是引用的内存中存储的捕获组中捕获的内容。

        非捕获组:
            以 (?) 开头的组是纯的非捕获 组,它不捕获文本 ,也不针对组合计进行计数。
            就是说,如果小括号中以?号开头,那么这个分组就不会捕获文本,当然也不会有组的编号,因此也不存在Back 引用。
            非捕获组则不会捕获文本,也不会将它匹配到的内容单独分组来放到内存中。所以,使用非捕获组较使用捕获组更节省内存。
            匹配indestry或者indestries,可使用 indestr(y|ies) 或 indestr(?:y|ies)
            (?:a|A)123(?:b) 可匹配 a123b 或 A123b

        引用已存在的分组: \N  \1 匹配第一个分组,以此类推,最多99
        命名分组: (?P<group_name>)

    断言:
        reg(?=exp)  零宽度正先行断言?=    reg匹配的内容后面内容满足exp规则

        reg(?!exp)  零宽度负先行断言?!    reg匹配的内容后面内容不满足exp规则

        (?<=exp)reg 零宽度正后发断言?<=    reg匹配的内容前面内容满足exp规则

        (?<!exp)    零宽度负后发断言?<!    reg匹配的内容前面内容不满足exp规则

    常用正则表达式:
        汉字: ^[\u4e00-\u9fa5]{0,}$
        英文和数字: ^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
        中文、英文、数字包括下划线: ^[\u4E00-\u9FA5A-Za-z0-9_]+$
        Email地址: ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
        匹配IP段,CIDR: ^(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\/([1-9]|[1-2]\d|3[0-2])$
        域名: [a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
        手机号码: ^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
        电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX): ^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
        身份证号(15位、18位数字),最后一位是校验位,可能为数字或字符X: (^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)
        强密码(必须包含大小写字母和数字的组合,可以使用特殊字符,长度在8-10之间):  ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
        InternetURL:  [a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
        腾讯QQ号:  [1-9][0-9]{4,} (腾讯QQ号从10000开始)
        中国邮政编码: [1-9]\d{5}(?!\d) (中国邮政编码为6位数字)




















  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值