从 javascript 字符串中删除特定的 HTML 标记及其内容

Posted

技术标签:

【中文标题】从 javascript 字符串中删除特定的 HTML 标记及其内容【英文标题】:Remove specific HTML tag with its content from javascript string 【发布时间】:2017-12-28 23:03:14 【问题描述】:

我有以下字符串变量,我想从字符串中删除所有 a 标记及其内容。

var myString = "<table><tr><td>Some text ...<a href='#'>label...</a></td></tr></table>";
myString += "<table><tr><td>Some text ...<a href='#'>label...</a></td></tr></table>";
myString += "<table><tr><td>Some text ...<a href='#'>label...</a></td></tr></table>";

我已经检查了这个Remove html content groups from start to end of string in javascript 问题的答案,但它适用于所有标签。

谢谢

【问题讨论】:

【参考方案1】:

这是代码。正则表达式 /&lt;a.*&gt;.*?&lt;\/a&gt;/ig 非常适合您的数据。

var myString = "<table><tr><td>Some text ...<a href='#'>label...</a></td></tr></table>";
myString += "<table><tr><td>Some text ...<a href='#'>label...</a></td></tr></table>";
myString += "<table><tr><td>Some text ...<a href='#'>label...</a></td></tr></table>";

console.log(myString);

var anchorTagsRemoved = myString.replace(/<a.*?>.*?<\/a>/ig,'');
console.log(anchorTagsRemoved);

【讨论】:

完美、干净、简单..? 要用于跨越多行的较大标签,请添加新的行检查。 html.replace(/(.|\n|\r)*?/ig,'');【参考方案2】:

您应该避免使用正则表达式解析 HTML。这是一种使用DOM 删除所有&lt;a&gt; 标签的方法:

// your HTML text
var myString = '<table><tr><td>Some text ...<a href="#">label...</a></td></tr></table>';
myString += '<table><tr><td>Some text ...<a href="#">label...</a></td></tr></table>'
myString += '<table><tr><td>Some text ...<a href="#">label...</a></td></tr></table>'

// create a new dov container
var div = document.createElement('div');

// assing your HTML to div's innerHTML
div.innerHTML = myString;

// get all <a> elements from div
var elements = div.getElementsByTagName('a');

// remove all <a> elements
while (elements[0])
   elements[0].parentNode.removeChild(elements[0])

// get div's innerHTML into a new variable
var repl = div.innerHTML;

// display it
console.log(repl)

/*
<table><tbody><tr><td>Some text ...</td></tr></tbody></table>
<table><tbody><tr><td>Some text ...</td></tr></tbody></table>
<table><tbody><tr><td>Some text ...</td></tr></tbody></table>
*/

【讨论】:

> “您应该避免使用正则表达式解析 HTML”... 很有趣。我从来没想过那个。为什么? @Bangkokian 10 岁的问题!但这个线程中的答案仍然与 IMO 相关:***.com/q/590747。【参考方案3】:

var myString = "<table><tr><td>Some text ...<a href='#'>label...</a></td></tr></table>";
myString += "<table><tr><td>Some text ...<a href='#'>label...</a></td></tr></table>";
myString += "<table><tr><td>Some text ...<a href='#'>label...</a></td></tr></table>";

el = document.createElement('div');
el.innerHTML = myString;

var output = document.getElementById('output');
el.querySelectorAll('a').forEach(function(item, index)
	item.parentNode.removeChild(item);
)
output.innerText = el.innerHTML;
<h3>Output:</h3>
<pre id='output'></pre>

【讨论】:

以上是关于从 javascript 字符串中删除特定的 HTML 标记及其内容的主要内容,如果未能解决你的问题,请参考以下文章

从Javascript中的字符串中删除尾随字符

JavaScript如何从数组中删除特定数据

如何使用 Javascript 从特定域中删除 cookie?

如何从javascript或jquery中的元素数组中删除特定元素

如何从javascript或jquery中的元素数组中删除特定元素

在Javascript中使用特定位置有条件地删除字符