2013-03-19 3 views
3

У меня есть следующая строка в Javascript и вам нужно удалить теги <?xml ... ?> и <!DOCTYPE .... ]>. Невозможно преобразовать его в dom, потому что ошибки BR теги не закрываются и не могут редактировать фактическое содержимое.Strip <? Xml и <! DOCTYPE from string

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

Попытка сделать это с .Привернуть, но не вполне может показаться, чтобы получить там

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

ответ

5

ваших replace() работ по <?xml ... ?> части, чтобы удалить <!DOCTYPE .... ]> часть, а также вы можете сделать:

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

Как вы АКС смотрите здесь: 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

Итак, какое преимущество он предлагает более ответ darkajax от 8 минут назад? –

+2

Я более общий. Если содержимое изменяется, мое регулярное выражение продолжает работать. –

Смежные вопросы