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;">]><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;">]><div>Blah<br> Blah</div>
<?xml version="1.0" encoding="UTF-8"?><div>Blah<br> Blah</div>
<!DOCTYPE html [<!ENTITY amp "&#38;">]><div>Blah<br> Blah</div>
所以,它在8分钟前提供什么优势darkajax的答案吗? – 2013-03-19 22:47:50
我更通用。如果内容发生变化,我的正则表达式继续工作。 – 2013-03-20 06:26:52