2011-03-23 45 views
1

我有一些JavaScript正在看基於用戶選擇的文本字符串和包裝在<範圍內的字符串>標籤。我正在尋找一個正則表達式,它將查看文本字符串並檢查字符串中現有的html標記,如果它們存在,則分割跨度以使其不會使html無效。正則表達式來插入html標籤無法創建無效的html

例如,可以說我有以下文字

 

<p>Lorem ipsum dolor sit amet, <i>consectetur adipiscing elit</i>. 
Curabitur tortor risus, facilisis vitae bibendum sit amet, mattis non dui.</p> 

,用戶可以選擇 「阿梅德,<我> consectetur」。該字符串應該結束了爲 「<跨度>阿梅德,</SPAN > <我> <跨度> consectetur </SPAN >」,而不是TP 「<跨度>阿梅德,<我> consectetur </SPAN >」

+2

這將是很難使用正則表達式來完成這項工作。通常,正則表達式對於HTML解析來說是個壞主意。示例:我懷疑如果結束標記出現在選擇內,您只想創建一個跨距塊?在這種情況下,語義進入過程,正則表達式不適合。看看HTML解析器。 – 2011-03-23 15:12:15

回答

3

HTML不應該用RegEx解析。見:RegEx match open tags except XHTML self-contained tags

+0

請詳細說明一下(沒有引用Bobince的整個着名咆哮)。 – 2011-03-23 15:15:27

+0

我很想避免使用正則表達式來解決這個問題。什麼是更好的方法? – cangeceiro 2011-03-23 15:28:51

+0

+1用於提醒用戶使用RegEx和HTML的問題。但是請注意,您引用的問題也有答案,表明在某些有限的情況下,使用正則表達式解析HTML是合理的。它絕對是真的,你**不能**使用正則表達式來解析HTML的**結構**。但是你可以使用正則表達式來確定什麼是標籤和什麼是文本。這是一個非常不同的問題。實際上,我認爲在這種情況下海報的問題可以通過正則表達式來處理。 (雖然可能有更好的方法來解決問題。) – 2011-03-23 15:36:41