正则表达式: ^: 指定字符串开始 $: 指定字符串结束 快捷方式: \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位数字)
正则表达式 一篇就搞定
最新推荐文章于 2021-07-01 16:17:15 发布