2011-02-28 73 views
2

我有以下的HTML作爲我的JavaScript函數的字符串:匹配HTML標記與內容的JavaScript正則表達式

<p>one</p> <p align='center'>two</p> 

我想提取這個字符串:(顯然不帶引號)

"onetwo"

能否請您提供一些純粹的JavaScript代碼(jQuery也行......)來獲取標籤的內容?

+2

不要使用正則表達式http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – RichardTheKiwi 2011-02-28 11:20:29

+0

+1好評。他現在會悔改..:D – 2011-02-28 11:22:00

回答

5

使用jQuery你並不需要一個複雜的正則表達式,你可以很容易地解析HTML和使用DOM:

var s = "<p>one</p> <p align='center'>two</p>"; 
var wrapper = $('<div />').html(s); 
var text = wrapper.text(); 

在這種情況下$(s).text()本來也工作,但如果你有空閒就會失敗第一級文本(例如<p>1</p>2),所以我通常避免它。

注意,這裏的結果是"one two"(不"onetwo"),因爲你有<p>標籤之間的空間。
如果這是一個問題,您可以根據您的確切需要,例如使用wrapper.children().text()wrapper.find('p').text()

工作例如:http://jsbin.com/osidi3

+0

+1好玩的技巧.. – 2011-02-28 11:21:03

+1

不使用正則表達式確實是這樣做的關鍵:P – Exelian 2011-02-28 12:12:49

1

我做了以下的正則表達式來抓住從XML標籤內容。 這隻適用於包含內容且後面有結束標籤的標籤。不會獲得包含其他標籤的標籤的內容。 標籤名稱是捕獲組1和標籤內容是捕獲組2.這將努力獲得的所有內容,包括<,>,」,「和&標籤內容的內部。

<([^\s>]+)\s?[^>]*>(.*)(?:<\/\1)> 
相關問題