首页 > 解决方案 > 如何删除 < 和 > javascript 中的内容

问题描述

我有一个包含一串元素和图像的内容。前任:

var str= <p>&lt;img src=\"v\"&gt;fwefwefw&lt;/img&gt;</p><p><br></p><p><br></p>

&lt和中的文本是&gt脏标签,我想将其连同其中的内容一起删除。标签是动态生成的,因此可以是任何标签,即<div>, <a>, <h1> etc....

预期输出:<p></p><p><br></p><p><br></p>

但是,使用此代码,我只能删除标签,而不能删除其中的内容。

str.replaceAll(/&lt;.*?&gt;/g, "");

它呈现这样,这不是我要找的:

<p>fwefwefw</p><p><br></p><p><br></p><p><br></p>

我怎样才能删除&标签以及内容,以便摆脱其中的脏标签和文本?

小提琴:https ://jsfiddle.net/3rozjn8m/

谢谢

标签: javascriptregex

解决方案


一种安全的方法是使用 DOM 解析器,访问每个文本节点,然后可以单独清理每个文本。这样你就可以确定 DOM 结构没有改变;只有文本:

let str= "<p>&lt;img src=\"v\"&gt;fwefwefw&lt;/img&gt;</p><p><br></p><p><br></p>";

let doc = new DOMParser().parseFromString(str, "text/html");
let walk = doc.createTreeWalker(doc.body, 4, null, false);
let node = walk.nextNode();
while (node) {
    node.nodeValue = node.nodeValue.replace(/<.*>/gs, "");
    node = walk.nextNode();
}
let clean = doc.body.innerHTML;

console.log(clean);

当您拥有多个<p>具有此类内容的元素时,这也将起作用。


推荐阅读