概要
这是一个可安全移植、实用导向的正则表达式参考手册。
不使用标志语法(如 (?s)、(?m)、(?i)),仅列出在不同操作系统与工具中稳定可用的模式。
换行代码与系统差异
| 操作系统 |
换行符 |
推荐模式 |
说明 |
| Windows |
\r\n |
\r?\n |
同时兼容 CRLF 与 LF |
| macOS / Linux |
\n |
\r?\n |
自动兼容 |
要点:
- 检测或替换换行符时统一使用
\r?\n,适用于所有平台。
- 匹配跨行内容时,应使用
(?:.|\r|\n)(因为. 默认不匹配换行)。
Part 1:基础语法(分类速查)
1-1. 字符类与范围
| 模式 |
含义 |
输入 |
匹配 |
. |
任意1个非换行字符 |
a.c / abc |
abc |
[abc] |
匹配 a、b、c 中任意一个 |
bag |
a |
[^0-9] |
匹配非数字 |
a1 |
a |
[A-Z0-9] |
大写字母或数字 |
X8z |
X,8 |
1-2. 数量限定符
| 模式 |
含义 |
输入 |
匹配 |
* |
重复0次或多次 |
goooogle |
goooo |
+ |
重复1次或多次 |
google |
oo |
? |
0次或1次 |
color colour |
两者均匹配 |
{n} |
精确重复n次 |
a{3} / aaa |
aaa |
{n,} |
重复n次或更多 |
a{2,} / aaaa |
aaaa |
{n,m} |
重复n到m次 |
a{2,4} / aaaaa |
aaaa |
1-3. 位置锚点
| 模式 |
含义 |
输入 |
匹配 |
^abc |
行首的abc |
abc\nzabc |
第一行 |
abc$ |
行末的abc |
zabc\nabc |
两行末尾 |
\bword\b |
单词边界的word |
word words |
word |
\Bing |
非单词边界的ing |
ringing |
后半 ing |
1-4. 常用转义字符
| 模式 |
含义 |
输入 |
匹配 |
\d |
数字 [0-9] |
ver2.10 |
2,10 |
\D |
非数字 |
a1 |
a |
\w |
字母、数字、下划线 |
a_b-1 |
a_b |
\W |
非字母数字 |
a# |
# |
\s |
空白字符(空格/制表符/换行) |
a b |
中间空格 |
\S |
非空白 |
a b |
a,b |
\t |
制表符 |
a\tb |
匹配制表符 |
1-5. 特殊符号与转义
| 模式 |
含义 |
输入 |
匹配 |
\. |
字面点号 |
a.c |
a.c |
\* |
星号本身 |
a*b |
a*b |
\+ |
加号 |
a+b |
a+b |
\? |
问号 |
what? |
what? |
\( \) |
小括号 |
(test) |
(test) |
| |
竖线 |
`a |
b` |
\\ |
反斜杠 |
C:\\path |
\\ |
\^ |
脱字符 |
^abc |
^abc |
\$ |
美元符 |
total$ |
$ |
\[ \] |
中括号 |
[abc] |
[abc] |
\{ \} |
花括号 |
{a,b} |
{a,b} |
Part 2:分组、分支与前后预查
| 模式 |
功能 |
输入 |
匹配 |
(abc)+ |
组重复 |
abcabcx |
abcabc |
| `(?:jpg |
png)` |
非捕获分组 |
file.png |
| `foo |
bar` |
或条件 |
bar |
\d+(?=円) |
匹配“円”前的数字 |
合計100円 |
100 |
^(?!.*error).* |
不含“error”的行 |
ok\nerror |
ok |
(?<=¥)\d+ |
“¥”后的数字 |
¥300 |
300 |
(?<!Mr\.)\s[A-Z] |
不在 Mr. 后的大写字母 |
Ms. Alice |
A |
Part 3:跨行匹配示例
| 用途 |
模式 |
输入 |
匹配 |
| HTML 块 |
`<div>(?:. |
\r |
\n)*?</div>` |
| 日志块(含时间) |
`^[\d{4}-\d{2}-\d{2} [\d:]+](?:. |
\r |
\n)*?(?=^[\d{4}-\d{2}-\d{2} |
| Markdown 代码块 |
“ “`(?:. |
\r |
\n)*?“` “ |
| 多行注释 |
`/*(?:. |
\r |
\n)*?*/` |
Part 4:常用模式(否定与抽取)
| 用途 |
模式 |
输入 |
匹配 |
| 仅数字 |
^\d+$ |
123 |
123 |
| 仅字母数字 |
^[A-Za-z0-9]+$ |
user01 |
user01 |
| 邮箱(简化版) |
^[\w.-]+@[\w.-]+\.[A-Za-z]{2,}$ |
a@b.com |
a@b.com |
| URL |
https?://[\w.-]+\.[A-Za-z]{2,}(/[\w./?=&%-]*)? |
https://ex.com/a |
整体 |
| ISO 日期 |
\d{4}-\d{2}-\d{2} |
2025-10-30 |
2025-10-30 |
| 国际电话 |
\+\d{1,3}[\s-]?\d{1,14} |
+81 90 1234 5678 |
整体 |
| 强密码 |
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$ |
Abcd1234 |
整体 |
| HTML 注释 |
`<!–(?:. |
\r |
\n)*?–>` |
| 不含 error 的行 |
^(?!.*error).* |
ok\nerror |
ok |
Part 5:替换示例
| 任务 |
模式 |
替换 |
输入 |
输出 |
| 交换单词顺序 |
(\w+)\s+(\w+) |
${2} ${1} |
John Doe |
Doe John |
| 替换分隔符 |
; |
, |
a;b;c |
a,b,c |
| 合并多空格 |
\s{2,} |
|
a b |
a b |
| 删除HTML标签 |
<[^>]+> |
“ |
<p>a</p> |
a |
| 去除首尾空格 |
`^\s+ |
\s+$` |
“ |
a |
| 换行转空格 |
\r?\n |
|
a\nb |
a b |
| 删除行尾注释 |
//.*$ |
“ |
x=1;//note |
x=1; |
| 日期格式统一 |
(\d{4})/(\d{2})/(\d{2}) |
${1}-${2}-${3} |
2025/10/30 |
2025-10-30 |
| 压缩重复行 |
^(.*)(\r?\n\1)+$ |
${1} |
重复行 |
单行 |
总结
正则表达式是一种强大的文本处理工具,可在多语言、多平台环境中使用。
无论是日志分析、数据清洗还是代码解析,掌握无标志位安全模式能显著提升可移植性与可靠性。