我需要从字符串中替换几乎所有的 HTML 标签。
标签的内容应该保留。
我想保留几个标签:
例如。:
INPUT:
"<p>TEXT</p><div>container</div><p></p><ul><li><b>list element</b>: 0.1 [mm]</li><li><strong>Another list element</strong>: 0.2</li></ul><span>span element</span>"
OUTPUT:
"<p>TEXT</p>container<p></p><ul><li><b>list element</b>: 0.1 [mm]</li><li>Another list element: 0.2</li></ul>span element"
我知道我可以通过一一替换所有标签来做到这一点:string.replace(/<\/span>/g, '');
也许有更快的选择。我怎样才能实现它?
最佳答案
最好避免使用正则表达式来解析 Html
在您的情况下,您可以使用 html 解析器,例如 DOMParser
htmls = `<p>TEXT</p><div>container</div><p></p><ul><li><b>list element</b>: 0.1 [mm]</li><li><strong>Another list element</strong>: 0.2</li></ul><span>span element</span>`;
let parser = new DOMParser();
let doc = parser.parseFromString(htmls, "text/html");
let span = doc.getElementsByTagName("span");
let sr = doc.getElementsByTagName("strong");
let elmarray = [...Array.from(span), ...Array.from(sr)];
elmarray.forEach((e) => {
e.outerHTML = e.innerHTML;
});
console.log(doc.body.innerHTML);
但是,如果您的
html
很简单,你可以使用 replace
和谨慎的正则表达式html =
"<p>TEXT</p><div>container</div><p></p><ul><li><b>list element</b>: 0.1 [mm]</li><li><strong>Another list element</strong>: 0.2</li></ul><span>span element</span>";
r = html.replace(/(<\/?span>|<\/?strong>)/g, "");
console.log(r);
关于javascript - 替换几乎所有的 HTML 标签,而不是在 JS 中的字符串中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63408474/