JavaScript正则表达式删除JSON中的转义反斜杠和引号

时间:2014-11-27 18:07:06

标签: javascript html regex json escaping

根据我所阅读的内容(例如this article),您需要在以JSON格式发送HTML时转义\"

我想使用unescape(),但自JS 1.5以来它已被弃用。

" 使用decodeURI()或decodeURIComponent()代替",w3schools建议。但decodeURI()decodeURIComponent()不会逃避\"

我得到的回应看起来像是:

"html": {
    "searchresult": "<div class=\\\"item\\\">\n\t\t\t<article class=\\\"unit\\\">\n\t\t\t\t<a href=\\\"page2.html\\\">Link<\\/a>\n\n\t\t\t\t\n\t\t\t<\\/article>\n\t\t<\\/div>"
}

然后我将以下内容保存为var markup

return $('<textarea/>').html( response ).val();

最后还剩下这个半工作的HTML

<div class=\"item\"> <article class=\"unit\"> <a href=\"page2.html\">Link<\/a> <\/article> <\/div>

我现在需要删除\之前的所有"/\才能正常工作。猜测删除标签之间的空白可能是一个奖励。

我尝试过以下内容删除\",效果很好。

markup.replace('\\"', '"');

但我无法弄清楚如何删除/\(加上.replace(blah).replace(blah)感觉不对)。 This article给了我一个提示,但我仍然感到迷失在Regexp的魔法世界中。

任何帮助非常感谢!

2 个答案:

答案 0 :(得分:2)

你还没有说出你的数据来自哪里,但我会假设你有一个有效的HTML字符串(显然包含换行符和标签),显然你正试图让它成为JSON中对象内searchresult对象的html属性。这是你如何做到的:

var json = JSON.stringify({html: yourString});

示例:

var yourString =
    '<div class="item">\n\t\t\t<article class="unit">\n\t\t\t\t<a href="page2.html">Link</a>\n\n\t\t\t\t\n\t\t\t</article>\n\t\t</div>';
var json = JSON.stringify({html: yourString});
snippet.log("The JSON:");
snippet.log(json);
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

答案 1 :(得分:0)

如果要将整个字符串中的\“更改为”。

markup.toString().replace(/\\"/g,'"');