首页/开发/正则与编码速查/CSS 转义序列的写法与用途

CSS 转义序列的写法与用途

CSS 反斜杠转义分两类:跟非十六进制字符表示该字符本身,跟 1 到 6 位十六进制表示一个 Unicode 码点,可用空白收尾。它用于书写含特殊字符的选择器与 content 文本,外部数据拼选择器应优先用 CSS.escape()。

正则与编码速查开发更新于 2026-10-17
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​‌‌‌​​‌‌​​‌​‌‌​‌​‌‌​​‌​‌​‌‌‌​​‌‌​‌‌​​​‌‌​‌‌​​​​‌​‌‌‌​​​​​‌‌​​‌​‌​​‌​‌‌​‌​‌‌‌​​‌‌​‌‌​​‌​‌​‌‌‌​​​‌​‌‌‌​‌​‌​‌‌​​‌​‌​‌‌​‌‌‌​​‌‌​​​‌‌​‌‌​​‌​‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

反斜杠的两种含义

CSS 的转义统一由一个反斜杠引导,按后面跟什么分两种情形:跟普通字符时就是该字符本身,用于让特殊符号失去语法含义;跟十六进制数字时表示一个码点,最多取 6 位十六进制并允许用一个空白字符收尾。它同时服务于标识符(类名、ID、属性值)和字符串字面量两种上下文,规则细节以 CSS Syntax 规范为准。

基本信息

字符转义反斜杠加一个非十六进制字符,表示该字符本身,如 \. 表示点号
码点转义反斜杠加 1 到 6 位十六进制,可跟一个空白作为结束符,如 \31 表示数字 1
十六进制大小写不敏感,\41 与 \a 大小写等价
字符串中的换行反斜杠加真实换行表示续行,换行本身被吃掉
合法范围码点上限为 U+10FFFF,空字符会被替换为 U+FFFD

典型使用场景

  • 纯数字或含特殊符号的类名无法直接写选择器,必须转义
  • 在 content 属性里显示引号、箭头、中文标点等字符
  • 框架生成的类名含斜杠、井号(如 Tailwind 的任意值语法)时需要转义
  • JS 模板字符串里拼接选择器,反斜杠要按层翻倍
  • 做样式回归测试,用确定的转义形式避免选择器写法歧义

写法示例

写法示例
/* 类名是 123,选择器必须转义首字符 */
.\31 23 { color: red; }
/* 十六进制码点:U+2002 与左引号 */
.bullet::before { content: "\2002"; }
.quote::before  { content: "\201C"; }
/* 特殊字符转义:井号、点号、斜杠 */
#\#hash { display: block; }
.c\/d   { display: block; }
/* JS 里拼接选择器,反斜杠翻倍 */
const sel = '.' + CSS.escape(userInput);  /* 优先用内建 API */

转义与结果对照

写法含义常见误写
\31 23类名 123,先码点后跟空格结束\3123 会被当成一个码点 U+3123
\.点号字符,不再作为类选择器开头写成 .\. 反而多了一层
\2002U+2002 半角空格,比   更明确少写前导零导致位数不足
\;分号字符,属性选择器里常见在属性值里反斜杠要按字符串规则处理
\"字符串中的双引号在单引号字符串里反而多余
浏览器提供 CSS.escape(),用它处理来自用户或数据的外部类名最稳妥;手工拼转义容易漏掉第二个字符是数字或连字符的场景,规则细节请以官方文档为准。
把 CSS 写进 HTML 的 style 标签时,内容里出现 </style> 会提前结束样式块;写进 JS 字符串时反斜杠还要再翻一倍。同一份样式在 CSS 文件、JS 字符串、HTML 内联三个位置需要不同层数的转义。

易错点

  • 十六进制转义忘记写结束空格,\31 23 写成 \3123 就从两个字符变成一个码点,选择器匹配不到任何元素
  • 以为转义码点是 UTF-16 码元:CSS 的码点转义直接对应 Unicode 码点,emoji 写一个 \1F600 即可,不需要代理对
  • 在 JS 字符串里写 CSS 转义只写一层反斜杠,实际传给浏览器的选择器少了一个反斜杠
  • 类名来自用户输入时不用 CSS.escape 而手工拼接,特殊字符会导致选择器语法错误或匹配到意外的元素
  • 用 NUL 或超出 U+10FFFF 的码点做转义,浏览器会替换为 U+FFFD,样式静默失效

数据来源与参考

  • W3C CSS Syntax Module Level 3:Consume an escaped code point
  • MDN:CSS.escape 与 CSS 转义序列
  • W3C CSS 2.1:字符串与标识符语法

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/regex/css-escape-sequences.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​‌‌‌​​‌‌​​‌​‌‌​‌​‌‌​​‌​‌​‌‌‌​​‌‌​‌‌​​​‌‌​‌‌​​​​‌​‌‌‌​​​​​‌‌​​‌​‌​​‌​‌‌​‌​‌‌‌​​‌‌​‌‌​​‌​‌​‌‌‌​​​‌​‌‌‌​‌​‌​‌‌​​‌​‌​‌‌​‌‌‌​​‌‌​​​‌‌​‌‌​​‌​‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​