Orion's Studio.

正则表达式

2024/04/07

Regular Expression。简写为 regex 或 RegExp。

正则表达式在 JS 中

正则表达式也是对象。

定义方式一般是字面量,用两个斜杠包裹,如:/ab+c/

或者用 RegExp 构造函数,如:new RegExp('ab+c', 'i')。第一个参数可以是字面量或字符串,第二个参数是标志参数。

RegExp 方法

exec

参数是指定字符串,返回值是一个结果数组或 null。

test

参数是指定字符串,返回值是布尔值。

String 方法

match

参数是正则表达式,返回值是一个结果数组或 null。

matchAll

参数是正则表达式,返回值是一个结果数组或 null,结果数组每个元素也是个数组,其中包括匹配结果和所有捕获组。

参数是正则表达式,返回值是匹配结果的索引或 -1。

replace

参数是正则表达式和替换字符串,返回值是替换后的字符串。

split

参数是正则表达式,返回值是一个字符串数组。

正则表达式的特殊字符

  • ^:匹配输入的开始。
  • $:匹配输入的结束。
  • n{X}:匹配包含 X 个 n 的序列的字符串。
  • n{X,Y}:匹配包含 X 至 Y 个 n 的序列的字符串。
  • n{X,}:匹配包含至少 X 个 n 的序列的字符串。
  • *:匹配前面的子表达式零次或多次。等价于 {0,}
  • +:匹配前面的子表达式一次或多次。等价于 {1,}
  • ?:匹配前面的子表达式零次或一次。等价于 {0,1}
  • ?:紧跟在量词 *、 +、? 或 {} 的后面,表示在非贪婪匹配中,匹配尽量少的字符。
  • x(?=y):先行断言,匹配 ‘x’ 仅当 ‘x’ 后面跟着 ‘y’。即正向肯定预查。
  • x(?!y):匹配 ‘x’ 仅当 ‘x’ 后面不跟着 ‘y’。即正向否定预查。
  • (?<=y)x:后行断言,匹配 ‘x’ 仅当 ‘x’ 前面是 ‘y’。即反向肯定预查。
  • (?<!y)x:匹配 ‘x’ 仅当 ‘x’ 前面不是 ‘y’。即反向否定预查。
  • .:匹配除换行符 \n 之外的任何单个字符。
  • (x):匹配 ‘x’ 并且记住匹配项。即捕获组。
  • (?:x):匹配 ‘x’ 但是不记住匹配项。即非捕获组。
  • x|y:匹配 ‘x’ 或 ‘y’。
  • [xyz]:字符集合,匹配包含的任一字符。
  • [^xyz]:反向字符集合,匹配未包含的任一字符。
  • \f:匹配一个换页符。
  • \n:匹配一个换行符。
  • \r:匹配一个回车符。
  • \t:匹配一个制表符。
  • \v:匹配一个垂直制表符。
  • \s:匹配任何空白字符,包括空格、制表符、换页符等。等价于 [\f\n\r\t\v]
  • \d:匹配一个数字字符。等价于 [0-9]
  • \D:匹配一个非数字字符。等价于 [^0-9]
  • \S:匹配任何非空白字符。等价于 [^\f\n\r\t\v]
  • \w:匹配包括下划线的任何单词字符。等价于 [A-Za-z0-9_]
  • \W:匹配任何非单词字符。等价于 [^A-Za-z0-9_]
  • \b:匹配一个单词边界,即字与空格间的位置。
  • \B:匹配非单词边界。
  • [\b]: 匹配退格键。
  • \0:匹配一个 NUL 字符。
  • \x:x 为数字,返回第 x 个捕获组的匹配。
  • \xxx:匹配由八进制数 xxx 指定的字符。
  • \xdd:匹配由十六进制数 dd 指定的字符。
  • \uxxxx:匹配由十六进制数 xxxx 指定的 Unicode 字符。

正则表达式的标志

  • g:全局匹配。
  • i:不区分大小写。
  • m:多行匹配。
  • s:允许 . 匹配换行符。
  • u:启用 Unicode 匹配。
  • y:粘连匹配。
CATALOG
  1. 1. 正则表达式在 JS 中
    1. 1.1. RegExp 方法
      1. 1.1.1. exec
      2. 1.1.2. test
    2. 1.2. String 方法
      1. 1.2.1. match
      2. 1.2.2. matchAll
      3. 1.2.3. search
      4. 1.2.4. replace
      5. 1.2.5. split
  2. 2. 正则表达式的特殊字符
  3. 3. 正则表达式的标志