You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用正则表达式将JSON字符串外层双引号替换为单引号并保留内层双引号

解决JSON字符串内层双引号导致解析失败的替换方案

你之前的正则是全局匹配所有双引号,没有区分结构位置和内容位置,所以会把所有双引号都替换成单引号。我们可以利用JSON结构的语法特征做匹配:只有紧挨着JSON结构符号({、[、:、,、}、])的双引号是外层的结构引号,值内部的双引号不会和这些符号相邻,所以只需要匹配这些位置的双引号替换为单引号即可。


具体实现代码

场景1:字符串为正常双引号格式

const dataString = '{"EN" : "2. This English "Blha Blha"  "Woo Woo" something wrong."}';
// 匹配结构位置的双引号替换为单引号
const result = dataString.replace(/([{\[:,]\s*)"|"(\s*[}\],:])/g, "$1'$2");

场景2:字符串结构引号为HTML实体"

const dataString = '{"EN" : "2. This English "Blha Blha"  "Woo Woo" something wrong."}';
const result = dataString.replace(/([{\[:,]\s*)"|"(\s*[}\],:])/g, "$1'$2");

结果验证

执行后得到的结果和预期完全一致:

{'EN' : '2. This English "Blha Blha"  "Woo Woo" something wrong.'}

后续转对象方法

替换后的字符串已经不是标准JSON格式,不需要再用JSON.parse,可以直接转成JS对象:

const dataObj = new Function(`return ${result}`)();

注意事项

该方案适用于绝大多数常规业务场景,如果你的内容里存在值末尾刚好带JSON结构符号的极端情况,建议优先推动API提供方对返回内容里的特殊字符做转义,从源头上解决JSON格式问题。

内容的提问来源于stack exchange,提问作者Paing Htet Aung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:45:00