正则表达式语法速查表:字符类、量词、断言一网打尽

Regex Syntax Cheat Sheet: Character Classes, Quantifiers & Assertions at a Glance

"每次写正则都要搜索语法,\b 是什么意思来着?前行断言的语法是 (?=) 还是 (?<=)?字符类里的连字符要转义吗?"——正则语法细节太多,记不住很正常。

本速查表按功能分类整理了所有常用正则语法,配合表格和示例,让你在需要时快速查阅。收藏本页,再也不用每次都去搜索引擎找答案。

01 字符类(Character Classes)

字符类用于匹配特定类别的字符。它们是正则表达式中最基础也最常用的组成部分。下表列出了所有常用字符类及其含义。

字符类速查表

语法含义示例
.匹配除换行符外的任意字符a.c → abc, a1c, a-c
\d数字 [0-9]\d{3} → 123, 456
\D非数字 [^0-9]\D+ → abc, hello
\w字母数字下划线 [a-zA-Z0-9_]\w+ → hello_world
\W非字母数字下划线\W → @, #, !, 空格
\s空白字符(空格、制表符、换行)a\sb → "a b", "a\tb"
[abc]字符集合——匹配 a、b 或 c 中的任意一个[aeiou] → 匹配元音字母
[^abc]否定字符集——匹配除 a、b、c 外的任意字符[^0-9] → 匹配非数字
[a-z]字符范围——匹配 a 到 z 的小写字母[A-Za-z] → 所有英文字母

02 量词(Quantifiers)

量词控制前面的字符或组重复出现的次数。默认为贪婪模式(尽可能多匹配),在量词后加 ? 变为懒惰模式(尽可能少匹配)。

量词速查表

语法含义懒惰版本
*零次或多次*?
+一次或多次+?
?零次或一次??
{n}恰好 n 次
{n,}n 次或更多{n,}?
{n,m}n 到 m 次{n,m}?

03 锚点与边界(Anchors & Boundaries)

锚点不匹配字符本身,而是匹配字符之间的位置。它们用于限定匹配必须出现在特定位置(如行首、行尾、单词边界)。

锚点速查表

语法含义示例
^行首(或字符串开头)^Hello → 仅匹配行首的 Hello
$行尾(或字符串结尾)world$ → 仅匹配行尾的 world
\b单词边界\bcat\b → 匹配 "cat" 但不匹配 "catch"
\B非单词边界\Bcat → 匹配 "scat" 中的 "cat"

04 分组与断言(Groups & Assertions)

分组使用圆括号将多个字符组合为一个单元,可以用于重复、捕获或条件匹配。断言(也称零宽断言)用于匹配位置而非字符,不消耗字符串中的字符。

分组与断言速查表

语法含义示例
(abc)捕获组(\d+)px → 捕获数字部分
(?:abc)非捕获组(?:jpg|png) → 分组但不捕获
(?<name>abc)命名捕获组(?<year>\d{4}) → groups["year"]
a|b或(交替)cat|dog → 匹配 cat 或 dog
(?=abc)正向前行断言\d+(?=px) → 数字后面是 px 才匹配
(?!abc)负向前行断言\d+(?!px) → 数字后面不是 px 才匹配
(?<=abc)正向后行断言(?<=\$)\d+ → $ 后面的数字
(?<!abc)负向后行断言(?<!\$)\d+ → 前面不是 $ 的数字

05 特殊序列与转义(Special Sequences)

正则表达式中有一些特殊字符具有特别含义。如果要匹配这些字符本身,需要用反斜杠 \ 转义。以下是需要注意的特殊字符和序列列表。

  • 需要转义的特殊字符:. * + ? ^ $ { } [ ] ( ) | \
  • \n — 换行符
  • \t — 制表符(Tab)
  • \r — 回车符
  • \0 — 空字符(null)
  • \uXXXX — Unicode 字符(如 \u4e2d 匹配"中")
  • \p{Script=Han} — Unicode 属性匹配(需 u 标志,匹配中文)

常见问题

\d 和 [0-9] 有什么区别?

在 JavaScript 中,\d 默认等价于 [0-9]。但在启用 Unicode 模式(u 标志)的某些引擎中,\d 可能匹配其他语言的数字字符(如阿拉伯数字 ٣)。如果只想匹配 0-9,建议明确使用 [0-9]。

如何匹配中文字符?

推荐使用 Unicode 属性匹配:/\p{Script=Han}/u。传统方法是 [\u4e00-\u9fa5],但这只覆盖了 CJK 统一汉字基本区,可能遗漏扩展区的汉字。Unicode 属性匹配更准确全面。

前行断言和后行断言有什么限制?

在 JavaScript(ES2018+)中,前行和后行断言都被完整支持。但在某些旧引擎或语言中,后行断言可能不支持可变长度模式。Suried Regex 测试器使用现代 JavaScript 引擎,支持所有断言语法。

正则表达式里 ^ 有两种含义吗?

是的。在字符类 [...] 外面,^ 表示行首锚点;在字符类 [...] 里面且在开头位置,^ 表示否定(取反)。例如 ^abc 匹配行首的 "abc",而 [^abc] 匹配除 a、b、c 外的任意字符。

这张速查表涵盖了所有正则语法吗?

本表涵盖了 95% 以上日常开发中需要的正则语法。一些高级特性如条件匹配 (?(1)a|b)、原子组 (?>...)、递归模式等属于 PCRE 扩展,JavaScript 原生不支持,因此未列入。

📋

立即使用工具

本速查表按功能分类整理了所有常用正则语法,配合表格和示例,让你在需要时快速查阅。收藏本页,再也不用每次都去搜索引擎找答案。

TOOLS.SURIED.COM