string.raw 是 javascript 中用于获取未被转义的原始模板字符串的内置标签函数,它保留反斜杠序列(如 、u{...})为字面字符,仅对模板字面量静态部分生效,插值仍正常计算,适用于正则、路径等需避免双重转义的场景。

Strings.raw 是 JavaScript 中用于获取**未被转义的原始模板字符串**的内置方法,它不会处理字符串中的任何转义序列(比如
、 、\ 等),而是原样返回字面量内容。
Strings.raw 的基本用法
它是一个标签函数,通常配合模板字符串使用。语法为:String.raw`template string` 或 String.raw({ raw: ... }, ...substitutions)。
- 直接传入模板字面量时,它会跳过所有反斜杠转义,把
、u{...}、\等都当作普通字符处理 - 底层原理是读取模板字符串的
raw属性(即未经转义的原始片段),再拼接插值部分
对比普通模板字符串和 String.raw
看一个典型例子:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
const name = "Alice";
console.log(`Hello
${name}u{1F600}`);
// 输出:
// Hello
// Alice?
console.log(String.raw`Hello
${name}u{1F600}`);
// 输出:Hello
Aliceu{1F600}(全部是字面字符,不换行、不解析 Unicode)
注意:${name} 插值仍会正常计算,但所有反斜杠序列都失去特殊含义。
适用场景:正则表达式、路径、SQL 片段等
当字符串中大量出现反斜杠(如正则、文件路径、CSS、SQL),用 String.raw 可避免双重转义困扰:
- 写正则时:
String.raw`/asb/`→ 字符串就是"a\sb",可直接传给new RegExp() - Windows 路径:
String.raw`C:UsersAliceDocuments`→ 不会误把U当作 Unicode 转义 - 生成带引号或转义的代码片段时,更可控、不易出错
注意事项和常见误区
String.raw 只影响模板字符串的静态部分(即反引号内的原始文本),不影响插值表达式的结果:
- 插值里的字符串仍按常规规则处理,例如
String.raw`Hi ${" "}`中的" "仍是换行符 - 它不能“还原”已转义过的字符串,只对模板字面量生效;对普通字符串调用无效
- 不支持嵌套模板字符串的“深层原始化”,每个
String.raw只作用于当前一层
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










