JavaScript中替换转义双引号为单引号失效问题排查
解决
"替换为'失败及JSON解析错误问题 问题根源
你的代码无法替换目标字符,核心原因是正则匹配对象错误:
- 原代码用
/\\"/g匹配JavaScript转义双引号(字符串中写为\",实际对应字符"),但API返回的是HTML实体转义的双引号("),甚至是带反斜杠的\",两者完全不匹配,导致替换无效。
正确解决方案
根据API返回的字符串格式,选择对应的替换逻辑:
场景1:API返回字符串包含"
直接匹配HTML实体"并替换为单引号:
function replaceQuotes(inputString) { return inputString.replace(/"/g, "'"); }
场景2:API返回字符串包含\"
若字符串中存在带反斜杠的\"(实际字符为\+"),需转义正则中的反斜杠:
function replaceEscapedQuotes(inputString) { return inputString.replace(/\\"/g, "'"); }
测试示例
针对你提供的API返回片段,使用场景2的函数测试:
const apiResponse = `"<a href=\\"https://fly.localhost.com/?page_id=42\\" rel=\\"noopener\\" target=\\"_blank\\">CDM Hub System </a></p>"}],"FullName":"Aggregate Demand Logs - RF","DisplayName":"Aggregate Demand Logs - RF","Id":"16f53da4-bb8b-4efb-ab50-8cf545061198","AssetType_Color":"#FDBD37","AssetType_SymbolType":"ICON_CODE"`; const fixedString = replaceEscapedQuotes(apiResponse); console.log(fixedString); // 输出会将所有\"替换为',此时即可正常解析
补充说明
替换后能解决JSON解析错误,是因为原字符串中属性值内嵌套的双引号未正确转义,替换为单引号后避免了引号冲突,符合解析器的语法要求。
内容的提问来源于stack exchange,提问作者ATHUL SURESH
相关产品推荐
相关产品推荐

