JSON字符串中双引号须转义为"、反斜杠须转义为,Notepad++替换时应分模式处理:普通模式下"→"、→\;正则模式需额外转义;不可见字符需用扩展模式定位并转义为标准JSON序列。

JSON字符串里双引号、反斜杠怎么安全替换
Notepad++ 默认不自动转义,直接替换容易破坏 JSON 结构。比如把 "name":"Alice" 里的 " 全替成别的符号,会导致解析失败;又或者把路径中的 当作正则转义符处理,结果删掉一半内容。
正确做法是分两层处理:先确保你用的是「普通」模式(不勾选「正则表达式」),再针对性替换:
- 双引号
"→ 替换为":在「查找内容」填",「替换为」填",模式选「普通」 - 反斜杠
→ 替换为\:因为 JSON 要求字面反斜杠必须写成两个,所以查,替成\(注意:这里不是正则,不用额外转义) - 如果原始文本已含
"或\,但你想统一标准化,就得切到「正则表达式」模式,并用"和\\来匹配——因为正则里本身要转义,\才表示一个字面反斜杠,所以两个字面反斜杠得写成\\
换行、制表符等不可见字符怎么清理
JSON 标准不允许未转义的换行符或制表符出现在字符串值中,否则 JSON.parse() 会直接报错 SyntaxError: Unexpected token。Notepad++ 里这些字符看不见,但它们真实存在。
启用「扩展( , , , , x…)」模式后,你可以直接输入转义序列定位:
- 查换行符:
(Windows)或(Unix),替换为\n(JSON 转义后的换行) - 查制表符:
,替换为\t - 查回车符:
,替换为\r - 零宽空格、软连字符等 Unicode 控制字符:复制粘贴到查找框最可靠;或用十六进制模式搜索
200b、00ad等
批量去掉 JSON 字符串里的转义,比如 " → "
这不是格式化,而是“反解”——常见于日志里存了 JSON 字符串(如数据库字段值),再导出时带了一层多余的转义。例如原始应为 {"msg":"Hello"},实际看到的是 {"msg":"Hello"}。
这类替换必须用「普通」模式,否则 " 会被正则引擎当成一个整体去匹配,反而漏掉单个 ":
- 先替换
"→"(注意:查找框里输入两个字符:和",不是正则语法) - 再替换
\→(同理,输入两个反斜杠,替成一个) - 如果还有
/、等,按需逐个替换;但别碰uXXXX,那是合法 Unicode 转义,删了就丢数据 - 操作前务必备份——错一次可能让整个 JSON 变成无效文本
为什么用了 $1 捕获组却没生效
Notepad++ 的 PCRE 引擎支持 $1,但有两个硬限制:一是必须勾选「正则表达式」,二是括号必须是半角 ( ),中文括号或全角符号会直接失效;三是不能嵌套太多层,否则捕获逻辑混乱。
典型误用场景:
- 想把
"key":"value"提取 value 并加单引号:写"([^"]*)":"([^"]*)"→'$2',但忘了开头的"也要匹配,结果只捕获到key":"value后半段 - 用
(.+)匹配整行,但源文本含换行,而.默认不匹配,得改成([sS]*)或勾选「. 匹配换行符」 - 复制粘贴的 JSON 里有 BOM 头或 UTF-8 带 BOM 编码,导致正则引擎读错字节边界,
$1引用偏移——此时先「编码 → 转为 UTF-8 无 BOM」再操作
真正难的不是写对正则,而是确认你面对的到底是不是纯 JSON 文本:它可能混着注释、尾逗号、单引号键名,甚至前面塞了 var data = 这种 JS 包装。这种时候,别硬刚正则,先用 NPPJSONViewer 插件验一下结构是否合法。











