Post

正则符号

正则符号

基本符号

  • ^ 行的起始位置
  • $ 行的结束位置
  • […] 列出的任意字符
    • gr[ea]y:匹配 grey 和 gray
    • A[1-4]:匹配 A1、A2、A3 和 A4,其中“-”为元字符
  • [^…] 未列出的任意字符
    • a[^12]b:匹配 a1b 和 a2b 外所有 a[]b 类型字符
  • . 单个任意字符
    • 点号在字符组内不再是元字符
  • ** ** 匹配分隔两边的任意一个表达式
  • ? 可选项
  • + 之前的紧邻的元素出现一次或多次
  • ** * ** 之前的紧邻的元素出现任意次或不出现
  • **** 转义字符
  • {min, max} 至少需要 min 次,至多容许 max 次

修饰符

  • i 忽略大小写
    • /ab/i 匹配 Ab、AB 和 aB
  • g 全局模式
  • x 宽松排列和注释模式
  • s 点号通配模式
  • m 增强的行锚点模式

特殊符号

  • \t 制表符
  • \v 垂直制表符
  • \n 换行符
  • \r 回车符
  • \f 进纸符
  • \b 单词起止符
  • \s 空白字符
  • \S 非空白字符
  • \w [a-zA-Z0-9]
  • \W 除\w 之外的任何字符
  • \d [0-9],即数字
  • \D 除\d 外的任何字符,即[^0-9]
  • \u 八进制
  • \1\2等 捕获引用

括号()的用途

  • (…) 限制多选项范围,将多干字符组合成一个单元 a,并可以被捕获,配合\1,\2 等来引用
  • (?:…) 仅用于分组,表示不捕获
  • (?=…) 肯定顺序环视,子表达式能够匹配右侧文本
  • (?!…) 否定顺序环视,子表达式不能匹配右侧文本
  • (?<=…) 肯定逆序环视,子表达式能够匹配左侧文本
  • (?<!…) 否定逆序环视,子表达式不能匹配左侧文本
  • (?i:…) 限制模式范围
  • **(? #:…)\*\*
  • (?…) 命名捕获,js 不支持
  • (?>…) 固化分组,js 不支持
  • **(?if then else)** 条件判断
This post is licensed under CC BY 4.0 by the author.

Trending Tags