2011-02-02 82 views
1

我有一個HTML字符串像消除HTML標籤

Lorem ipsum <a href='google.com'>google <span>rulz</span></a> not sum 

我想刪除所有的HTML標籤,我的意思是我想刪除所有的HTML元素,所以字符串應該轉化爲(在JavaScript)

Lorem ipsum not sum 

我想它的匹配(和替換)它尤斯:

<([a-z][a-z0-9]*)\b[^>]*>.+?<\/([a-z][a-z0-9]*)\b[^>]*> 

的問題是,我得到

Lorem ipsum </a> not sum 

因爲正則表達式替換爲「google rulz」,但我希望它替換孔html標記,所以我發現它發生了。

有什麼想法?

+3

你不使用的HTML解析器的原因嗎? – robert 2011-02-02 12:29:34

+0

而不是刪除一個正則表達式中的打開和關閉標籤,你試過替換*任何*標籤:`<.*?>`?這樣,打開和關閉標籤將被單獨移除,並且不需要擔心匹配它們。 – JaredC 2011-02-02 12:32:36

回答

0

您可以使用​​3210函數。

0

如果你從一個元素中檢索這個文本,你可以得到它的innerText這將返回沒有html這樣的文本。

console.log(getElementById('someId').innerText); 
0

<[^>]*>匹配任何看起來像遠程一個 HTML標記。如果這不夠好,你應該使用一個完整的HTML解析器。

1

你可以使用jQuery來創建一個虛擬元素,並得到它的文本內容,即


<script type='text/javascript'> 
d = $('div'); 
d.html(text); 
stripped = d.text(); 
</script> 
0

嘗試 var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi