javascript - 如何删除 < 和 > javascript 中的内容
问题描述
我有一个包含一串元素和图像的内容。前任:
var str= <p><img src=\"v\">fwefwefw</img></p><p><br></p><p><br></p>
<
和中的文本是>
脏标签,我想将其连同其中的内容一起删除。标签是动态生成的,因此可以是任何标签,即<div>, <a>, <h1> etc...
.
预期输出:<p></p><p><br></p><p><br></p>
但是,使用此代码,我只能删除标签,而不能删除其中的内容。
str.replaceAll(/<.*?>/g, "");
它呈现这样,这不是我要找的:
<p>fwefwefw</p><p><br></p><p><br></p><p><br></p>
我怎样才能删除&
标签以及内容,以便摆脱其中的脏标签和文本?
小提琴:https ://jsfiddle.net/3rozjn8m/
谢谢
解决方案
一种安全的方法是使用 DOM 解析器,访问每个文本节点,然后可以单独清理每个文本。这样你就可以确定 DOM 结构没有改变;只有文本:
let str= "<p><img src=\"v\">fwefwefw</img></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>
具有此类内容的元素时,这也将起作用。
推荐阅读
- vscode-debugger - VSCode 调试将断点移回上一个
- sql - 缩小 NAVISION 2009 R2 报告上的 SQL 查询范围
- r - 在与 R 约会之后获取下周三的日期
- angular - 从父级引用 tooltip-content html 标签
- excel - 如果标识符相同,则数组内的值总和
- bash - Printf %d 字符串格式化数字
- javascript - 使用 AWS 服务的 chrome 扩展
- javascript - 无法使用 jQuery 过滤具有两个选项卡组的 div
- apache-kafka - 如何手动将代理 ID 添加到 zookper cli
- python - Bottle 的 request.get_cookie("cookie-name") 适用于所有浏览器,但在 Firefox 上返回 None