正则表达式速查表

可搜索的正则表达式速查表:字符类、锚点、量词、分组、环视、转义、修饰符和替换模式,并附带示例。

字符类

.
除换行外的任意字符(使用 s 修饰符时为任意字符)
a.c → abc, a-c
\d
数字 0–9(即使使用 u 修饰符也只匹配 ASCII 数字)
\d+ → 2024
\D
任意非数字字符
\w
单词字符:A–Z、a–z、0–9 或 _
\w+ → user_42
\W
任意非单词字符
\s
空白:空格、制表符、换行及 Unicode 空格
\S
任意非空白字符
[abc]
列出的字符之一
[aeiou] → e
[^abc]
除列出字符外的任意字符
[a-z]
范围内的字符(这里是 a 到 z)
[0-9a-f]+ → ff00
\p{L}
任意文字的字母(需要 u 修饰符)
\p{L}+ (u) → Việt
\p{Script=Han}
指定文字的字符,如 Han、Latin、Cyrillic(需要 u 修饰符)

锚点

^
文本开头(使用 m 时为每行开头)
$
文本结尾(使用 m 时为每行结尾)
\b
单词边界
\bcat\b → cat (not concat)
\B
非单词边界

量词

*
0 次或多次(贪婪)
+
1 次或多次(贪婪)
?
0 次或 1 次(可选)
colou?r → color, colour
{n}
恰好 n 次
\d{4} → 2024
{n,}
至少 n 次
{n,m}
n 到 m 次
*? +? ??
惰性版本:尽可能少地匹配
<.+?> → <b>

分组与引用

(abc)
捕获组,可用 $1、$2… 引用
(?:abc)
不捕获的分组
(?<name>abc)
命名捕获组
(?<y>\d{4}) → y = 2024
\1
重复第 1 组匹配到的文本
(\w)\1 → ll in hello
\k<name>
重复命名组匹配到的文本
a|b
左边或右边的任一选项
cat|dog → dog

环视

(?=abc)
后面紧跟 abc(不计入匹配)
\d+(?=px) → 12 in 12px
(?!abc)
后面不是 abc
(?<=abc)
前面是 abc(不计入匹配)
(?<=\$)\d+ → 5 in $5
(?<!abc)
前面不是 abc

转义

\. \* \\
转义特殊字符以按字面匹配
\n \t \r
换行、制表符、回车
\uFFFF
按 4 位十六进制码表示字符
\u{1F600}
按码位表示字符(需要 u 修饰符)

修饰符

g
查找所有匹配,而不只是第一个
i
不区分大小写
m
^ 和 $ 匹配每行的开头和结尾
s
点号也匹配换行
u
完整 Unicode 模式:支持 \p{…}、\u{…},表情算一个字符
y
只在 lastIndex 处匹配(粘连)
d
返回每个分组的起止索引

替换模式

$1
第 1 个捕获组的文本
$<name>
命名组的文本
$&
整个匹配
$` $'
匹配之前 / 之后的文本
$$
字面上的 $ 符号

相关工具

查看全部

什么是 正则表达式速查表?

一份简洁、可搜索的 JavaScript(ECMAScript)正则表达式语法参考。它涵盖字符类、Unicode 属性转义、锚点、量词(贪婪和惰性)、分组与反向引用、先行断言和后行断言、转义、全部七个修饰符,以及可在替换字符串中使用的特殊模式,并附有简短的示例。

如何使用 正则表达式速查表

  1. 滚动浏览各个章节,或在搜索框中输入内容,按标记(如 \b)或说明中的词(如“环视”)筛选。
  2. 阅读每个标记下的说明和示例。
  3. 在正则表达式测试工具中试用该模式。

示例

输入
Search: \d
输出
\d – A digit 0–9 (with the u flag still only ASCII digits); \D – Any character that is not a digit

何时使用 正则表达式速查表

适用于为 JavaScript、TypeScript、Node.js 以及大多数现代正则引擎编写正则时查阅。特定引擎的语法(PCRE/Python 中的占有量词、原子组、\A、\z、内联修饰符)没有列出,因为 JavaScript 不支持它们。

正则表达式速查表 的工作原理

条目按主题分组。搜索框会不区分大小写地筛选标记或译文说明中包含你输入内容的条目。说明反映的是 ECMAScript 的行为,例如即使使用 u 修饰符,\d 也只匹配 ASCII 数字,\p{…} 需要 u 修饰符,除非设置 s 修饰符,否则 . 不匹配换行。

常见用例

  • 查阅命名组或后行断言的语法
  • 回忆每个正则修饰符的作用
  • 核对 $& 和 $<name> 之类的替换模式
  • 用示例讲解正则基础

常见问题

\w 会匹配带重音的字母吗?

不会。在 JavaScript 中 \w 只匹配 A–Z、a–z、0–9 和 _。要匹配任何语言的字母,请配合 u 修饰符使用 \p{L}。

贪婪量词和惰性量词有什么区别?

贪婪量词(*、+、{n,})尽可能多地匹配;加上 ?(*?、+?)则让它们尽可能少地匹配,例如 <.+?> 匹配一个标签,而不是一直到最后一个 > 的所有内容。

JavaScript 支持后行断言吗?

支持,(?<=…) 和 (?<!…) 在所有现代浏览器和 Node.js 中都受支持。

探索更多分类