【发布时间】:2021-09-15 21:37:36
【问题描述】:
我需要从 HTML 行中删除除 div 和 span 之外的所有标签。我该怎么做?
例子
const str = "<div><p></p><span></span></div>";
remove(str)//<div><span></span></div>
【问题讨论】:
-
您是要删除标签还是 HTML 节点?
标签: javascript html regex
我需要从 HTML 行中删除除 div 和 span 之外的所有标签。我该怎么做?
例子
const str = "<div><p></p><span></span></div>";
remove(str)//<div><span></span></div>
【问题讨论】:
标签: javascript html regex
要删除除特定标签之外的所有标签,可以使用以下正则表达式。
const str = "<div><p></p><span></span></div>";
console.log(str.replace(/(<\/?(?:span|div)[^>]*>)|<[^>]+>/ig, '$1'));
【讨论】:
一种选择是使用DomParser 的parseFromString() 方法将字符串解析为(临时)HTML。然后,您可以使用.remove() 删除目标元素,如果需要,最后使用toString() 转换回字符串:
const str = "<div><p></p><span></span></div>";
var parser = new DOMParser();
var htmlDoc = parser.parseFromString(str, 'text/html').body;
var spans = htmlDoc.getElementsByTagName('span');
for (var i = 0; i < spans.length; i++) {
spans[i].remove();
}
var parsed = htmlDoc.innerHTML.toString();
console.log(parsed);
【讨论】:
for 循环。 getElementsByTagName 返回一个实时集合。见stackoverflow.com/questions/23988982/…
您可以使用正则表达式 /<\/?(?!\bdiv\b)(?!\bspan\b)\b\w+\b>/g 和 replaceAll
let str = "<div><oz></oz><span></span><hjk></hjk></div>";
let str1 = str.replaceAll(/<\/?(?!\bdiv\b)(?!\bspan\b)\b\w+\b>/g,'')
console.log(str1);
【讨论】: