Regular Expression Tutorial


Regex 101: 在线测试正则表达式的网站

匹配

  • ^: 匹配输入字符串开始位置
  • $: 匹配输入字符串结束位置
  • \b: 匹配单词边界。例如 er\b: 可以匹配 “never” 中的 “er” 而不能匹配 “verb” 中的 “er”
  • \B: 匹配非单词边界,与 \b 相反
  • \n: 匹配换行符
  • \r 匹配回车符
  • \t: 匹配制表符
  • \s: 匹配任何空白字符。包括空格、制表符、换页符等。
  • \S: 匹配任何非空白字符
  • .: 匹配除 \r\n 以外的任何单个字符
  • \d: 匹配数字字符
  • \D: 匹配非数字字符
  • \w: 匹配包括下划线在内的任何字母与数字字符
  • \W: 与 \w 相反
  • [\u4e00-\u9fa5]: 匹配中文字符
  • [^\x00-\xff]: 匹配双字节字符(包括中文)

重复

  • *: 匹配前面的表达式零次或多次
  • +: 匹配前面的表达式一次或多次
  • : 匹配前面的表达式零次或一次
  • {n}: 匹配前面的表达式 n 次
  • {n,}: 匹配前面的表达式至少 n 次
  • {n,m}: 匹配前面的表达式最少 n 次,最多 m 次

特殊

  • \: 转义字符,将下一个字符标记为一个特殊字符
  • : 非贪心量化。当该字符跟在任何一个重复修饰符后时,匹配尽可能少的字符串
  • (pattern): 匹配并获取字符串,用于向后引用。默认情况下,每个分组按照从左往右的规则依次分配组号为 1,2,3 等。之后使用 \1 来代表分组 1 匹配的文本。
  • (?:pattern): 非获取匹配,括号只做优先级分组
  • (?<name>pattern): 匹配并将组名设置为 name
  • (?=pattern): 匹配 pattern 之前的位置
  • (?!pattern): 匹配非 pattern 之前的位置
  • (?<=pattern): 匹配 pattern 之后的位置
  • (?<!pattern): 匹配非 pattern 之后的位置
  • |: 或
  • [xyz]: 匹配所包含的任意一个字符
  • [^xyz]: 匹配未列出的任意字符
  • [a-z]: 匹配指定范围内的任意字符
  • [^a-z]: 匹配未在指定范围内的任意字符