javascript - 如何转义对象内的所有双引号

标签 javascript html json

我有很多 HTML 标签,它们以字符串的形式硬编码在我的代码中。我想将它们移动到一个单独的模块中,以便我可以将它们用作变量。

当我使用 JSON.parse(HTMLTags) 解析对象时,出现错误

Unexpected token x in JSON

我知道这是因为双引号,并且我知道我可以使用反斜杠转义它们。但这太多了,因为它们有很多标签。还有其他办法吗?

  export const HTMLTags = `{
   "h1s": {
      "greating1": "<h1 id="ms1" class="ms">ABC</h1>",
      "greating2": "<h1 id="ms2" class="ms">XYZ</h1>",
               .
               .
               .
               .
               .
      "greatingx": "<h1 id="msX" class="ms">QWE</h1>"
   }
}`;

最佳答案

问题出在你的属性的引号上。源字符串本身无效:

const HTMLTags = `{
   "h1s": {
      "greating1": "<h1 id='ms1' class='ms'>ABC</h1>",
      "greating2": "<h1 id='ms2' class='ms'>XYZ</h1>",
      "greatingx": "<h1 id='msX' class='ms'>QWE</h1>"
   }
}`;


console.log(JSON.parse(HTMLTags));

您还可以通过正则表达式解析它:

                                                
const HTMLTags = `{
   "h1s": {
      "greating1": "<h1 id="ms1" class="ms">ABC</h1>",
      "greating2": "<h1 id="ms2" class="ms">XYZ</h1>",
      "greatingx": "<h1 id="msX" class="ms">QWE</h1>"
   }
}`;

const replaced = HTMLTags.replace(/(?<==)["']?((?:.(?!["']?\\s+(?:\S+)=|[>"']))+.)["']?/g,
                str => str.replace(/"/gi, `'`)
                );

console.log(replaced);
console.log(JSON.parse(replaced));

关于javascript - 如何转义对象内的所有双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59406476/

相关文章:

javascript - 如何解决,craco : *** Cannot find ESLint loader (eslint-loader). *** ANTd 和 React 错误 (2021)

html - 垂直列表中 <li> 之间的 CSS3 背景图像

javascript - 如何以及何时可以使用 &lt 或 &gt?

javascript - 导航栏文本的选择器

html - HTML 传回 JSON 时需要编码吗?

json - 将 Pandas DataFrame 转换为 JSON 格式

javascript - jQuery 自动完成选择更改后触发?

javascript - 在 jquery 中定位多个列表

javascript - JSON.parse 未捕获的语法错误 : Unexpected token o

javascript - 如何在javascript中一次用其他多个字符串替换多个字符串?