2014-05-21 55 views
-1

任何人都可以看看我的正則表達式在JavaScript中,並建議一個正確的?javascript正則表達式匹配HTML字符串中的屬性

我想在HTML/XML字符串中像下面那樣選擇屬性(名稱/值)對嗎?

<unknowncustom:tag attrib1="XX' XX'" attrib2='YY" YY"' attrib3=ZZ""'>/unknowncustom:tag> 

SOME TEXT that is not part of any tag and should not be selected, name='XX', y='ee'; 

<custom:tag attrib1="XX' XX'" attrib2='YY" YY"' attrib3=ZZ""'>/custom:tag> 

我發現很多解決方案,但似乎沒有萬無一失(包括本Regular expression for extracting tag attributes

我現在正則表達式選擇第一個屬性對,但無法弄清楚如何使它選擇所有匹配屬性。下面是正則表達式:

/<\w*:?\w*\s+(?:((\w*)\s*=\s*((?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))))[^>]*>/gim 

感謝

+0

預期產量? ,我不懂英文 – aelor

+5

[** No **](http://stackoverflow.com/a/1732454/497418)。不要這樣做。 [正則表達式是錯誤的解決方案](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。使用文檔片段並讓瀏覽器使用它的本地分析功能。 – zzzzBov

+0

期望的輸出將能夠遍歷所有屬性和值對。 對於那些建議讓瀏覽器使用其解析功能的人來說,這並不符合我的目的。如果不是正則表達式,那麼我可能不得不寫一個JS函數來處理它。 使用瀏覽器解析的問題是,當我試圖找回原始內容的源時,它的自定義屬性不會返回。 –

回答

1

讓我們一展身手:

/(\w+)\s*=\s*((["'])(.*?)\3|([^>\s]*)(?=\s|\/>))(?=[^<]*>)/g 

正則表達式是不理想這一點。如果您的屬性包含未轉義的尖括號<>它可能不起作用。

證明:http://regex101.com/r/dD4uT4

+0

雖然它讓我的IE崩潰引人注目(需要重啓),但它可以在FF,Chrome中運行。感謝您的努力。 –

+0

@VishalSeth嗯,沒有崩潰我的_Intranet_資源管理器。 –

相關問題