Strip <?xml和<!DOCTYPE from字符串

Strip <?xml和<!DOCTYPE from字符串

问题描述:

我在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, ''); 

replace()作品为<?xml ... ?>部分,删除<!DOCTYPE .... ]>部分,以及你可以这样做:

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

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

你可以使用这个表达式:

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