快速记忆正则表达式

一、基础

  • . 任意字符(换行除外)
  • \d 任意数字 \D 任意非数字
  • \w 任意数字字母下划线 \W 数字、字母、下划线以外的任意字符
  • \s 任意空白符 \S 任意非空白符

二、空白符

  • \r 回车符
  • \n 换行符
  • \f 换页符
  • \t 制表符
  • \v 垂直制表符

三、量词

  • * 含义:0 到多次
  • + 含义:1 到多次
  • ? 含义:0 到 1次
  • {m} 含义:出现 m 次
  • {m,n} 含义:m 到 n次
  • {,n} 其中 m 不写代表 0,至多 n次
  • {m,} 其中 n 不写代表无穷大,至少 m 次

四、范围

  • | 或,如 ab|bc 代表 ab 或 bc
  • [...] 多选一,括号中任意单个元素
  • [a-z] 匹配 a 到 z 之间任意单个元素(按 ASCII 表,包含 a,z)
  • [^...] 取反,不能是括号中的任意单个元素

举例验证手机号

1[3456789]\d{9}

1[3-9]\d{9}

1[^012]\d{9}

五、边界

  • ^ 匹配行的开始,多行模式是,可以匹配任意行开头
  • $ 匹配行的结束,多行模式时,可以匹配任意行结尾
  • \b 匹配单词边界
  • \A 仅匹配整个字符串的开始,不支持多行模式
  • \Z 仅匹配整个字符的结束,不支持多行模式

六、贪婪&非贪婪

  • 贪婪:表示次数的量词,默认是贪婪的,默认尽可能多地去匹配
  • 非贪婪:“数量” 元字符后加 ? (英文问号) 找出长度最小且满足要求的

七、环视

  • X(?<=Y) 匹配前面是 Y 的 X
  • X(?<!Y) 匹配前面不是 Y 的 X
  • X(?=X) 匹配后面是 Y 的 X
  • X(?!Y) 匹配后面不是 Y 的 X

八、子组

  • (正则) 将 regex 保存成一个子组
  • (?p正则) 命名子组,将 regex 保存成名称为 name 的子组
  • (?:正则) 仅分组,不保存这个子组
  • \分组编号 重复每个子组

练习正则

https://regex101.com/

posted @ 2020-04-06 13:01  xyztank  阅读(231)  评论(0编辑  收藏  举报