2012-06-14 24 views
4

我有一個字符串,其中包含存儲在var中的HTML圖像元素。從字符串中刪除圖像元素

我想從字符串中刪除圖像元素。

我曾嘗試:var content = content.replace(/<img.+>/,"");

和:var content = content.find("img").remove();,但沒有運氣。

任何人都可以幫助我嗎?

感謝

+0

其中是字符串? – thecodeparadox

回答

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

[^>]*指任何數目比>其他字符的。如果您使用.+代替,則如果有多個標籤,則替換操作會一次全部刪除它們,包括它們之間的任何內容。操作默認爲貪婪,意味着它們使用最大可能的有效匹配。

/g最後意味着替換所有的事件(默認情況下,它只刪除第一次出現)。

+0

太棒了!那就做到了!謝謝 – MeltingDog

+0

**注意:**如果'img'是這樣:'

+0

@Derek,它需要一個'end()'函數:'var content = $(content).find(」img「)。remove()。end()。 html();',根據@Scott Evernden的回答。 –

6

使用text()功能,它會刪除所有的HTML標籤!

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

哦,這很酷!從來不知道。 – senfo

+0

謝謝 - 但我需要保留所有其他HTML標記 - 只是不是img – MeltingDog

0

這是否對你的工作?:

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

它需要一個/ /或它只能刪除一個img標記。 –

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

不錯的使用'end()' –

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); 
2

下面的正則表達式應該做的伎倆:

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>"> 

當然,這是通過激發@Matt Coughlin的回答。

0

我現在在IE中......這個工作很好,但我的標籤以大寫形式出現(在使用innerHTML後,我認爲)...所以我添加了「i」以使其不區分大小寫。現在Chrome和IE很開心。

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