【发布时间】:2013-07-17 18:47:01
【问题描述】:
我正在尝试创建一个可以解析为 JSON 的字符串。该字符串是根据 CMS 中的内容动态创建的。
该内容可能包含带有双引号的 HTML 标记,这会使 JSON 解析器感到困惑。所以,我需要用" 替换HTML 中的双引号,而不需要替换实际上是JSON 结构一部分的双引号。
我的想法是将 HTML 包装在标记中,我可以使用它来将这些标记之间的所有内容标识为要替换的引号。
例如,我想解析成 JSON 的字符串可能看起来像这样......
str = '{"key1":"XXX<div id="divId"></div>YYY", "key2":"XXX<div id="divId"></div>YYY"}';
所以,我想用&quot; 替换 XXX 和 YYY 之间的每个双引号。
有点像...
str = str.replace(/XXX(")YYY/g, '"');
希望这是有道理的。感谢您的任何建议。
【问题讨论】:
-
我会假设回到 CMS 并让它/他们正确地编写 JSON 不是一个有效的选项?顺便说一句,非常粗略
(?:\w+=(")|"(?:\s|>))不过,老实说,这不是正则表达式的工作。而且,恕我直言,如果合同承诺提供 JSON,它应该。这就像试图用太多的逗号修复坏的 CSV... -
感谢布拉德的快速回复。你是对的,这不是正则表达式的工作。这只是试图破解我无法修复的东西。您的答案非常适合去除围绕 html 属性的引号,但我不能真正假设 innerHTML 中也不会有引号。
-
你不能得到一个更好的 JSON 解析器吗?这真的不应该是一个问题。
标签: javascript regex