从字符串中删除图像元素

时间:2012-06-14 00:46:27

标签: javascript jquery string image

我有一个字符串,其中包含存储在var。

中的HTML图像元素

我想从字符串中删除图像元素。

我尝试过:var content = content.replace(/<img.+>/,"");

和:var content = content.find("img").remove();但没有运气。

任何人都可以帮助我吗?

由于

8 个答案:

答案 0 :(得分:22)

var content = content.replace(/<img[^>]*>/g,"");

[^>]*表示>以外的任意数量的字符。如果您使用.+,如果有多个标记,则替换操作会立即删除它们,包括它们之间的任何内容。默认情况下操作是贪婪的,这意味着他们使用最大可能的有效匹配。

最后的

/g表示替换所有匹配项(默认情况下,它只删除第一次出现)。

答案 1 :(得分:6)

使用text()功能,它会删除所有HTML标记!

var content = $("<p>"+content+"</p>").text();

答案 2 :(得分:6)

$('<p>').html(content).find('img').remove().end().html()

答案 3 :(得分:4)

以下正则表达式应该可以解决这个问题:

var content = content.replace(/<img[^>"']*((("[^"]*")|('[^']*'))[^"'>]*)*>/g,"");

首先匹配<img。然后,[^>"']*会匹配除>"'以外的任何字符。然后(("[^"]*")|('[^']*'))将两个"与两个"之间的任何字符匹配([^"]*本身除外,这是'}部分)或相同的内容,但有两个"asf<>!('"字符。

  

此示例包括'akl>"<?'>

除了"'>之外,任何字符都会再次出现。当正则表达式在一组单引号或双引号之外找到>时结束。

这将考虑在@Derek 朕會功夫中指出的属性字符串中包含<img src="blah.png" title=">:(" alt=">:)" /> Some text between <img src="blah.png" title="<img" /> More text between <img /><img src='asdf>' title="sf>"> 个字符,因此会在以下测试场景中匹配并删除所有四个图像标记:

{{1}}

这当然受到@Matt Coughlin答案的启发。

答案 4 :(得分:0)

这对你有用吗?:

var content = content.replace(/<img[^>]*>/g, '')

答案 5 :(得分:0)

您可以将文本加载为DOM元素,然后使用jQuery查找所有图像并将其删除。我通常会尝试将XML(在本例中为html)视为XML,而不是尝试解析字符串。

var element = $('<p>My paragraph has images like this <img src="foo"/> and this <img src="bar"/></p>');

element.find('img').remove();

newText = element.html();

console.log(newText);

答案 6 :(得分:0)

我现在正在使用IE浏览器......这很有效,但我的标签大写(在使用innerHTML之后,我认为)...所以我添加了“i”以使其不区分大小写。现在Chrome和IE很高兴。

var content = content.replace(/<img[^>]*>/gi,"");

答案 7 :(得分:0)

要在没有正则表达式或库的情况下执行此操作(请阅读jQuery),可以使用DOMParser解析字符串,然后使用纯JS进行任何操作并重新序列化以获取字符串。