转义字符
Markdown转义机制:反斜杠转义规则、可转义字符列表与常见陷阱。
1. 转义机制概述
1.1 为什么需要转义
Markdown 使用特殊字符作为格式标记,当需要原样显示这些字符时,必须使用转义机制告诉解析器”这不是格式标记”。
# 不转义:标题
## 这是标题
# 转义:原样显示
\## 这不是标题,显示为 "## 这不是标题"
1.2 转义方式
Markdown 支持两种转义方式:
| 方式 | 语法 | 适用场景 |
|---|---|---|
| 反斜杠转义 | \* | 转义单个特殊字符 |
| HTML 实体 | & | 转义任意字符 |
2. 反斜杠转义
2.1 可转义字符
CommonMark 规范定义了以下可转义字符:
| 字符 | 名称 | 用途 | 转义示例 |
|---|---|---|---|
\\ | 反斜杠 | 转义前缀 | \\ → \ |
` | 反引号 | 行内代码 | \` → ` |
* | 星号 | 强调/无序列表 | \* → * |
_ | 下划线 | 强调 | \_ → _ |
{} | 花括号 | 某些扩展语法 | \{ → { |
[] | 方括号 | 链接/图片 | \[ → [ |
() | 圆括号 | 链接 | \( → ( |
# | 井号 | 标题 | \# → # |
+ | 加号 | 有序列表 | \+ → + |
- | 减号 | 无序列表/分隔线 | \- → - |
. | 句点 | 有序列表 | \. → . |
! | 感叹号 | 图片 | \! → ! |
| | 管道符 | 表格 | | → | |
2.2 转义规则
规则一:反斜杠后跟可转义字符时,反斜杠被移除,字符原样显示
\*不是强调\*
→ _不是强调_
规则二:反斜杠后跟不可转义字符时,反斜杠保留
\A → \A
\3 → \3
规则三:反斜杠在行尾时,表示硬换行
第一行\
第二行
→ 第一行<br>第二行
2.3 代码块中的转义
代码块内的内容不进行 Markdown 解析,因此不需要转义:
*这是代码块中的星号,不需要转义*
`` `这也是,不需要转义` ``
3. HTML 实体转义
3.1 常用 HTML 实体
| 字符 | 实体名称 | 实体编号 | 说明 |
|---|---|---|---|
< | < | < | 小于号 |
> | > | > | 大于号 |
& | & | & | & 符号 |
" | " | " | 双引号 |
' | ' | ' | 单引号 |
© | © | © | 版权符号 |
® | ® | ® | 注册商标 |
™ | ™ | ™ | 商标符号 |
— | — | — | 破折号 |
– | – | – | 短破折号 |
| |   | 不换行空格 |
3.2 使用场景
<!-- 显示 HTML 标签 -->
使用 `<div>` 创建容器
<!-- 显示 & 符号 -->
AT&T 公司
<!-- 不换行空格(防止行尾断行) -->
第一章 第二章
<!-- 版权声明 -->
Copyright © 2026 My Company
4. 常见陷阱
4.1 表格中的管道符
表格中使用管道符需要转义:
| 命令 | 说明 |
| -------------- | -------- |
| `grep \| file` | 管道操作 |
<!-- 或使用 HTML 实体 -->
| 命令 | 说明 |
| ------------------ | -------- |
| `grep | file` | 管道操作 |
4.2 强调中的星号
<!-- 错误:星号被解析为强调 -->
_文件名: readme_
<!-- 正确:转义星号 -->
\*文件名: readme\*
<!-- 或使用代码格式 -->
`*文件名: readme*`
4.3 正则表达式
<!-- 正则中的特殊字符需要转义 -->
匹配任意字符: `\.`
<!-- 更好的方式:使用代码块 -->
匹配任意字符: `\.`
4.4 数学公式中的转义
在 LaTeX 数学公式中,反斜杠是命令前缀,需要双重转义:
<!-- 在 Markdown 中显示 LaTeX 命令 -->
行内代码方式: `\alpha`
代码块方式:
\alpha + \beta
5. 各平台差异
| 场景 | CommonMark | GFM | 其他 |
|---|---|---|---|
| 在表格中 | 不适用 | 需要转义 | 同 GFM |
\- 在行首 | 转义列表标记 | 同 CommonMark | — |
\# 在行首 | 转义标题 | 同 CommonMark | — |
| 反斜杠数量 | 偶数个显示为半数 | 同 CommonMark | — |