0

我正在尝试创建一个可以解析为 JSON 的字符串。该字符串是根据 CMS 中的内容动态创建的。该内容可能包含带有双引号的 HTML 标记,这会使 JSON 解析器感到困惑。因此,我需要替换 HTML 中的双引号,"而不替换实际上是 JSON 结构一部分的双引号。我的想法是将 HTML 包装在标记中,我可以使用它来将这些标记之间的所有内容标识为要替换的引号。例如,我想解析成 JSON 的字符串可能看起来像这样......

str = '{"key1":"XXX<div id="divId"></div>YYY", "key2":"XXX<div id="divId"></div>YYY"}';

因此,我想将 XXX 和 YYY 之间的每个双引号替换为&quot;. 就像是...

str = str.replace(/XXX(")YYY/g, '&quot;');

希望这是有道理的。感谢您的任何建议。

4

1 回答 1

0

鉴于 Stack Overflow 的“我们不做你的作业”的原则,我认为我不会完成整个解决方案,但我可以在半成品代码中给你一些指示。

var xySearch = /this regex should find any text between XXX...YYY/g;
// note the g at the end! That's important
var result;
var doubleQuoteIndices = [];
// note the single-equals. I avoid them when possible inside a "condition" statement,
// but here it sort of makes sense.
while (result = xySearch.exec(str)) {
  var block = result[0];
  // inside of the block, find the index in str of each double-quote, and add it
  // to doubleQuoteIndices. You will likely need result.lastIndex for the absolute position.

}

// loop backwards through str (so that left-side replacements don't change right-side indexes)
// to replace the characters at each doubleQuoteIndices with the appropriate HTML.

我有点发现,对于某些模式来说,就像正则表达式一样好,让编程语言做一些工作通常是最好的解决方案。

于 2013-07-17T19:14:21.960 回答