正则速查表

JavaScript RegExp 速查:字符、字符类、锚点、量词、分组、环视、Flags 与替换引用。

All processing on this page runs locally in your browser unless noted otherwise.

本表对应本站使用的 JavaScript RegExp(非 PCRE / .NET)。

字符与转义

语法含义示例
.
匹配任意字符(默认不含换行;s 标志下可含换行)。
a.c → abc, aac
\d
数字 0–9。
\d+ → 42
\D
非数字。
\D → a
\w
单词字符:字母、数字或下划线。
\w+ → foo_1
\W
非单词字符。
\W → @
\s
空白字符。
\s → space/tab
\S
非空白字符。
\S → x
\t
制表符。—
\n
换行。—
\r
回车。—
\0
空字符 NUL。—
\xhh
两位十六进制表示的字符。
\x41 → A
\uhhhh
Unicode 码元(BMP)。
\u4e2d → 中
\cX
控制字符。
\cM → CR
\
转义后一个特殊字符。
\. → literal .

字符类

语法含义示例
[abc]
匹配集合中的一个字符。
[aeiou]
[^abc]
匹配不在集合中的字符。
[^0-9]
[a-z]
包含端点的字符范围。
[A-Za-z]
[\d\s]
字符类内可使用转义。
digit or space
[[\]]
字符类中的字面量方括号。
match [ or ]

锚点

语法含义示例
^
字符串开头(配合 m 时为行首)。
^Hi
$
字符串结尾(配合 m 时为行尾)。
end$
\b
单词边界。
\bcat\b
\B
非单词边界。
\Bcat
^…$ + m
有 m 时,^ / $ 匹配行首行尾。
with flag m

量词

语法含义示例
*
前一项重复 0 次或多次(贪婪)。
a* → "", a, aa
+
前一项重复 1 次或多次(贪婪)。
a+ → a, aa
?
前一项可选 0 或 1 次(贪婪)。
colou?r
{n}
恰好 n 次。
\d{4}
{n,}
至少 n 次。
\d{2,}
{n,m}
n 到 m 次。
\d{2,4}
*?
0 次或多次(懒惰)。
<.*?>
+?
1 次或多次(懒惰)。—
??
0 或 1 次(懒惰)。—
{n,m}?
n 到 m 次(懒惰)。—

分组与分支

语法含义示例
(…)
捕获分组。
(\d+)-(\d+)
(?:…)
非捕获分组。
(?:https?)
(?<name>…)
命名捕获分组。
(?<year>\d{4})
\1 / \k<name>
反向引用分组。
(\w+)\s+\1
|
分支(或)。
cat|dog

环视

语法含义示例
(?=…)
正向前瞻。
\d+(?=px)
(?!…)
负向前瞻。
foo(?!bar)
(?<=…)
正向后顾。
(?<=\$)\d+
(?<!…)
负向后顾。
(?<!@)\b\w+

修饰符

语法含义示例
g
全局:查找全部匹配。—
i
忽略大小写。—
m
多行:^ / $ 匹配行边界。—
s
dotAll:. 匹配换行。—
u
Unicode 模式。—
y
粘性:从 lastIndex 开始匹配。—
d
索引:提供匹配位置(需引擎支持)。—

替换引用

语法含义示例
$$
插入字面量 $。—
$&
插入整个匹配。—
$`
插入匹配前的文本。—
$'
插入匹配后的文本。—
$1 … $99
插入编号捕获组。—
$<name>
插入命名捕获组。—

How to use

  1. 按分区浏览,或搜索符号。
  2. 复制符号后粘贴到测试器的 Pattern 输入框。
  3. 需要现成例子时打开模板库。

FAQ

所有符号在任意浏览器都可用吗?

大多数可以。命名分组、后顾与 d 标志需要较新的引擎。

和 PHP / Python 有什么不同?

方言不同。测试器里的多语言片段仅作示意;本站匹配始终是 JS RegExp。

Related tools