参考手册

# 参考手册

# 字符类

字符集 [ABC]

匹配集合中的任何字符。

示例

[aeiou]

gl`i`b j`o`cks v`e`x dw`a`rv`e`s!
1
2
3

非集 [^ABC]

匹配不在集合中的任何字符。

示例

[^aeiou]

`gl`i`b j`o`cks v`e`x dw`a`rv`e`s!`
1
2
3

范围 [A-Z]

匹配ASCII码在指定范围区间的字符。

示例

[g-s]

abcdef`ghijklmnopqrs`tuvwxyz
1
2
3

点 .

匹配除换行符之外的任何字符。等价于[^\n\r]

示例

.

`glib jocks vex dwarves!`
1
2
3

完全通配 [\s\S]

可以用来匹配所有字符,包括换行符,但是除了dotall标符(s). 另外一种形式是[^], 但是它不被所有浏览器支持

示例

[\s\S]

`glib jocks vex dwarves!`
1
2
3

单词 \w

匹配字母、数字、下划线。 只匹配小ASCII码的字符(无声调字母或非罗马英文字符)。 等价于 [A-Za-z0-9_]

示例

\w

`bonjour`, `mon` `fr`è`re`
1
2
3

非词匹配 \W

匹配非字母、数字、下划线。 等价于 [^A-Za-z0-9_]

示例

\W

bonjour`, `mon` `fr`è`re
1
2
3

数字 \d

匹配任意数字 (0-9). 等价于 [0-9].

示例

\d

+`1`-(`444`)-`555`-`1234`
1
2
3

非数字 \D

匹配任意非数字字符 (0-9). 等价于 [^0-9].

示例

\D

`+`1`-(`444`)-`555`-`1234
1
2
3

空白字符 \s

匹配任何空白字符。(空格, 制表符, 换行符)

示例

\s

glib` `jocks` `vex` `dwarves!
1
2
3

非空白字符 \S

匹配任何非空白字符。(空格, 制表符, 换行符)

示例

\S

`glib` `jocks` `vex` `dwarves!`
1
2
3

# 锚定

开头 ^

匹配字符串开头,或者当使用多行标志(m)时,匹配一行的开头。 这个会匹配到位置,而不是字符。

示例

^\w+

`she` sells seashells
1
2
3

结尾 $

匹配字符串结尾,或者当使用多行标志(m)时,匹配一行的结尾。 这个会匹配到位置,而不是字符。

示例

\w+$

she sells `seashells`
1
2
3

词边界 \b

匹配一个单词边界,也就是指单词和空格间的位置。 详情见单词字符类(w)。

示例

s\b

she sell`s` seashell`s`
1
2
3

非词边界 \B

匹配非单词边界。 这个会匹配到位置,而不是字符。

示例

s\B

`s`he `s`ells `s`ea`s`hells
1
2
3

# 转义字符

保留字符 +

以下字符含有特殊含义, 应该以(反斜杠)为开头,以表示文字字符:

    • ? ^ $ \ . [] {} () | /

在一个字符集中, 只有 , -, 和 ] 需要被转义。

八进制转义 \000

八进制转义的形式为\000。数字值必须小于255(\377)。

十六进制转义 \xFF

十六进制转义的形式为\xFF。

tab制表符 \t

匹配 TAB制表符 (字符编码 9)。

lf换行符 \n

匹配 LF换行符 (字符编码 10)。

纵向制表符 \v

匹配 纵向制表符(VERTICAL TAB) (字符编码 11)。

换页符 \f

匹配 换页符(FROM FEED) (字符编码 12)。

CR换行符 \r

匹配 CR换行符 (字符编码 13)。

空(null) \0

匹配 空(NULL) (字符编码 0)。

# 分组 & 引用

捕获分组 (ABC)

把多个标记分在同一组并创建一个捕获分组,用来创建子串或引用。

示例

(ha)+

`hahaha` `ha`a `ha`h!
1
2
3

命名捕获分组 (?<name>ABC) 创建一个可以通过指定名称引用的捕获分组。

数字引用 \1

匹配捕获分组的结果。例如,\1 匹配第一个捕获分组的结果,\3 则匹配第三个结果。

示例

(\w)a\1

`hah` `dad` bad dab `gag` gab
1
2
3

非捕获分组 (?:ABC)

在不创建捕获分组的情况下,把数个标记组在一起。

示例

(?:ha)+

`hahaha` `ha`a `ha`h!
1
2
3

# 前后查找

前后查找允许主表达式前或之后的组,而不将其包含在结果中。

负向查找指定一个表达式之前或之后无法匹配的组。

正向先行断言 (?=ABC)

匹配主表达式后面的组而不将其包含在结果中。

示例

\d(?=px)

1pt `2`px 3em `4`px
1
2
3

负向先行断言 (?!ABC)

指定主表达式后无法匹配的组(如果匹配,则结果将被丢弃)。

示例

\d(?!px)

`1`pt 2px `3`em 4px
1
2
3

正向后行断言 (?<=ABC)

匹配主表达式之前的组,而不将其包含在结果中。

负向后行断言 (?<!ABC)

指定在主表达式之前无法匹配的组(如果匹配,则结果将被丢弃)。

# 量词 & 多选

量词指定了前面的标记需要出现的次数。默认情况下,量词是贪婪的,会尽可能多地匹配字符。

多选表现起来像 逻辑与,匹配这个或那个序列。

匹配1个或更多前面的标记。 +

匹配0个或更多前面的标记。 *

匹配指定数量个前面的标记。{1,3} 会匹配1个到3个。{3} 会匹配正好3个。{3,} 会匹配3个或更多。 {}

匹配0个或1个前面的标记,用于标为可选项。 ?

令前面的标记变慵懒,让其尽可能少地匹配字符。默认情况下,量词是贪婪的会尽可能多地匹配字符。 ?

多选表现起来像 逻辑与。匹配|前面的或后面的表达式。

它可以用在分组里面,或在整个表达式中使用。会按顺序尝试匹配。 |

# 替换

匹配 $&

插入匹配到的文本。

捕获分组 $1

插入匹配到的指定分组。例如,$3 会插入匹配到第3个分组。

匹配之前 $`

插入匹配到的文本之前的字符串。

之后匹配 $'

插入匹配到的文本之后的字符串。

转义$ $$

插入美元符号($)

转义字符 \n

方便起见,RegExr支持替换以下转义字符: \n, \r, \t, \, 以及 unicode转义字符 \uFFFF。这会因你的部署环境而异。

# 标识

标识可以改变表达式的解析方式。标识会在表达式末尾斜杠后(例如. /.+/igm )。

忽略大小写 i

让整个表达式对大小写不敏感。 例如,/aBc/i 会匹配到 AbC。

全局搜索 g

保留上次匹配结果的位置,允许子序列从上次匹配的结果继续搜索。

如果没有全局(g)标识, 后面的查询会返回相同的结果。

在禁用全局标识的时候,RegExr会为了避免无穷个匹配结果而只返回第一个结果。

多行 m

当启用 multiline标识时,使用起始和结尾锚(^ 和 $)会匹配到行首和行尾, 而不是整个字符串的头部和尾部。

需要注意的是类似/^[\s\S]+$/m的正则可能会匹配到含有换行符的字符串。因为锚会匹配到任意行的起始/结束位置。

dotall s

点(.)会匹配任何字符,包括换行符。

上次更新: 2022/7/8 下午2:14:23