4

Javascript に次の文字列があり、タグ<?xml ... ?><!DOCTYPE .... ]>タグを削除する必要があります。BR タグが閉じられていないというエラーが発生し、実際のコンテンツを編集できないため、DOM に変換できません。

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

.replace でそれを実行しようとしていますが、そこにたどり着くことができないようです

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

.js ファイルの既定のアクションを変更すると、.exe ファイルの既定のアクションを変更すると問題が発生するのと同じ理由で問題が発生します。プログラムは、別のプログラムのデフォルトのアクションがそれを実行することであると想定しています。編集は、デフォルトではなく、常に右クリック アクションである必要があります。

4

3 に答える 3

8

その部分のためのあなたのreplace()作品<?xml ... ?>

パーツも削除するには、<!DOCTYPE .... ]>次のようにします。

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

ここでわかるように: http://jsfiddle.net/darkajax/9fKnd/1/

于 2013-03-19T22:39:25.010 に答える
5

この正規表現を使用できます:

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>
于 2013-03-19T22:46:57.703 に答える
0

受け入れられた答えには不要なエスケープがあります(余分なバックスラッシュ、醜い正規表現を醜くします)、これも機能します:

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

console.log(text)

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

console.log(afterReplace)

于 2018-12-06T17:47:25.933 に答える