Javascript正则表达式来查找某些字符之间的双引号

Javascript正则表达式来查找某些字符之间的双引号,javascript,regex,Javascript,Regex,我试图创建一个可以解析为JSON的字符串。字符串是根据CMS中的内容动态创建的。 该内容可能包含带有双引号的HTML标记,这会混淆JSON解析器。因此,我需要将HTML中的双引号替换为“,而不替换实际上是JSON结构一部分的双引号。 我的想法是将HTML包装在标记中,我可以使用它来标识这些标记之间的所有内容,并将它们作为我要替换的引号。 例如,我想要解析为JSON的字符串可以如下所示 str = '{"key1":"XXX<div id="divId

我试图创建一个可以解析为JSON的字符串。字符串是根据CMS中的内容动态创建的。 该内容可能包含带有双引号的HTML标记,这会混淆JSON解析器。因此,我需要将HTML中的双引号替换为
,而不替换实际上是JSON结构一部分的双引号。 我的想法是将HTML包装在标记中,我可以使用它来标识这些标记之间的所有内容,并将它们作为我要替换的引号。 例如,我想要解析为JSON的字符串可以如下所示

str = '{"key1":"XXX<div id="divId"></div>YYY", "key2":"XXX<div id="divId"></div>YYY"}';
希望这是有意义的。谢谢你的建议。

鉴于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.

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

我假设回到CMS并让它/他们正确地编写JSON不是一个有效的选择?顺便说一句,非常粗糙的
(?:\w+=(“”“|”)(?:\s |>)
不过,老实说,这不是正则表达式的工作。而且,依我看,如果一份合同承诺提供JSON,它应该提供。这就像试图修复一个带有太多逗号的坏CSV…感谢Brad的快速响应。你说得对,这不是正则表达式的工作。这只是试图破解一些我无法修复的东西。你的答案工作得很完美用于剥离html属性周围的引号,但我不能假设innerHTML中也不会有引号。难道你不能得到一个更好的JSON解析器吗?这真的不应该是一个问题。这非常有意义。拉出所有html,单独调整每个html字符串,然后将其放回原始字符串中。我将实现这个解决方案,谢谢。
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.