📑 正则表达式终极速查表 (The Ultimate Regex Cheatsheet)
1. 基础元字符 (The Basics)
| 字符 |
含义 |
举例 |
匹配结果 |
. |
任意字符(除了换行符) |
a.c |
abc, a!c, a 1c |
\d |
任意数字 (Digit) |
\d{3} |
123, 904 |
\D |
非数字 |
\D |
A, !, 空格 |
\w |
单词字符 (字母/数字/下划线) |
\w+ |
hello, code_123 |
\W |
非单词字符 |
\W |
!, @, , \n |
\s |
空白字符 (空格/Tab/换行) |
\s |
, \t, \n |
\S |
非空白字符 |
\S |
A, 9, * |
2. 集合与区间 (Character Classes)
| 字符 |
含义 |
举例 |
匹配结果 |
[abc] |
字符集,匹配其中任意一个 |
[b-d]at |
bat, cat, dat |
[^abc] |
取反集,匹配除了它们以外的 |
[^0-9] |
任何非数字字符 |
\| |
逻辑“或者” (OR) |
cat\|dog |
cat 或者 dog |
3. 量词与匹配性格 (Quantifiers & Personality)
| 量词 |
贪婪模式 (Greedy) |
懒惰模式 (Lazy / ?) |
含义 |
* |
* |
*? |
重复 0 次或多次 |
+ |
+ |
+? |
重复 1 次或多次 |
? |
? |
?? |
重复 0 次或 1 次 (可选) |
{n} |
{n} |
- |
必须精准重复 $n$ 次 |
{n,} |
{n,} |
{n,}? |
至少重复 $n$ 次 |
{n,m} |
{n,m} |
{n,m}? |
重复 $n$ 到 $m$ 次 |
4. 边界锚点 (Anchors - 零宽断言)
| 字符 |
含义 |
举例 |
匹配结果 |
^ |
字符串的绝对开头 (M模式下为行首) |
^Apple |
必须以 Apple 开头的文本 |
$ |
字符串的绝对结尾 (M模式下为行尾) |
End$ |
必须以 End 结尾的文本 |
\b |
单词边界 (Word Boundary) |
\bcat\b |
只能是独立的单词 cat (不匹配 cattle) |
5. 分组与预查高级特性 (Groups & Lookarounds)
| 语法 |
类型 |
底层大白话含义 |
经典应用场景 |
(...) |
捕获组 |
打包成整体,并存入内存口袋 |
日期格式化重排,重复单词检测 |
\1, \2 |
反向引用 |
后面那个位置,必须和前面口袋里装的一模一样 |
匹配 <h1></h1> 或叠字 AA |
(?:...) |
非捕获组 |
仅仅为了打包或限定 \| 的范围,不存入内存 |
(?:http\|https):// 纯逻辑分流 |
(?=...) |
正向肯定预查 |
往右看,后面必须是……(不吃掉字符) |
密码强度检查,不含单位的纯数字提取 |
(?!...) |
正向否定预查 |
往右看,后面绝对不能是……(不吃掉字符) |
限制某些敏感词不能出现在特定位置 |
6. 全局标志 (Flags)
在正则外部使用(如 /pattern/flags):
* g (Global): 全局搜索,捞出所有匹配项,而不是找到第一个就躺平。
* i (Ignore Case): 忽略大小写。
* m (Multiline): 多行模式,让 ^ 和 $ 作用于每一行的开头和结尾。
* s (DotAll): 让点号 . 突破封印,可以匹配换行符 \n。
🚀 推荐学习资源
- 功能:包含实时拆解(Explanation)与状态机匹配步骤(Regex Debugger),可一步步看正则引擎的指针如何移动与回溯。
- 推荐引擎:支持 Python, JavaScript, PCRE, Golang 等。
- 功能:互动式学习,左边为文字解释,右边提供实际练习题(如提取电话、清洗日志),适合巩固基础。
- 功能:提供两组单词,通过编写最短、最优雅的正则对两组单词进行完美分流,适合进阶挑战。
4. 推荐书籍
- 《正则表达式必知必会》(Regular Expressions Cookbook):作者 Ben Forta。结构清晰,由“问题-解决方案-底层原理”的实际案例组成,适合作为工具书查阅。