2013-03-19 200 views
3

我在Javascript中有以下字符串,需要刪除<?xml ... ?><!DOCTYPE .... ]>標記。無法將其轉換爲dom,因爲BR標記錯誤未被關閉 - 而且無法編輯實際內容。Strip <?xml和<!DOCTYPE from字符串

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html [<!ENTITY amp "&#38;#38;">]><div>Blah<br> Blah</div> 

試圖與.replace做,但不能完全似乎那裏

text.replace(/\<\?xml.+\?\>/g, ''); 

回答

5

replace()作品爲<?xml ... ?>部分,刪除<!DOCTYPE .... ]>部分,以及你可以這樣做:

text.replace(/\<\?xml.+\?\>|\<\!DOCTYPE.+]\>/g, ''); 

正如你ACN在這裏看到:http://jsfiddle.net/darkajax/9fKnd/1/

4

你可以使用這個表達式:

text.replace(/\<(\?xml|(\!DOCTYPE[^\>\[]+(\[[^\]]+)?))+[^>]+\>/g, ''); 

與工程:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html [<!ENTITY amp "&#38;#38;">]><div>Blah<br> Blah</div> 

<?xml version="1.0" encoding="UTF-8"?><div>Blah<br> Blah</div> 

<!DOCTYPE html [<!ENTITY amp "&#38;#38;">]><div>Blah<br> Blah</div> 
+0

所以,它在8分鐘前提供什麼優勢darkajax的答案嗎? – 2013-03-19 22:47:50

+2

我更通用。如果內容發生變化,我的正則表達式繼續工作。 – 2013-03-20 06:26:52

相關問題