从字符串中删除图像元素
我有一个字符串,其中包含存储在var中的HTML图像元素。
我想从字符串中删除图像元素。
我试过了: var content = content.replace(//,"");
和: var content = content.find("img").remove();
但没有运气。
任何人都可以帮助我吗?
谢谢
var content = content.replace(/]*>/g,"");
[^>]*
表示除>
之外的任意数量的字符。 如果使用.+
,则如果有多个标记,则替换操作会立即删除它们,包括它们之间的任何内容。 默认情况下操作是贪婪的,这意味着它们使用最大可能的有效匹配。
/g
结尾意味着替换所有出现的事件(默认情况下,它只删除第一次出现)。
使用text()
函数,它将删除所有HTML标签!
var content = $(""+content+"
").text();
$('').html(content).find('img').remove().end().html()
以下正则表达式应该做到这一点:
var content = content.replace(/"']*((("[^"]*")|('[^']*'))[^"'>]*)*>/g,"");
它首先匹配 。 然后
[^>"']*
匹配除>
, "
和'
之外的任何字符。 然后(("[^"]*")|('[^']*'))
匹配两个"
中间有任何字符(除了"
本身,这部分[^"]*
)或相同的东西,但有两个'
字符。
一个例子是
"asf<>!('"
或'akl>"'
。
除了>
, "
和'
任何次数之外,再次出现任何字符。当正则表达式在一组单引号或双引号之外找到>
时,它会结束。
这将考虑在@Derek朕会功夫指出的属性字符串中有>
字符,因此在以下测试场景中匹配并删除所有四个图像标记:
Some text between More text between
这当然受到了@Matt Coughlin的回答的启发。
这对你有用吗?:
var content = content.replace(/]*>/g, '')
您可以将文本作为DOM元素加载,然后使用jQuery查找所有图像并将其删除。 我通常尝试将XML(在本例中为html)视为XML,而不是尝试解析字符串。
var element = $('My paragraph has images like this and this
'); element.find('img').remove(); newText = element.html(); console.log(newText);
我现在在IE中……这很好用,但我的标签是大写的(在使用innerHTML之后,我认为)…所以我添加了“i”以使其不区分大小写。 现在Chrome和IE很高兴。
var content = content.replace(/]*>/gi,"");
要在没有正则表达式或库(读取jQuery)的情况下执行此操作,您可以使用DOMParser来解析您的字符串,然后使用纯JS进行任何操作并重新序列化以获取字符串。