5

例として、私は置き換えようとしています

<script type='text/javascript'>some stuff</script>

と:

<div type='text/javascript'>some stuff</div>

私は現在、以下でテストしています:

alert( o.replace( /(?:<\s*\/?\s*)(script)(?:\s*([^>]*)?\s*>)/gi ,'div') );

しかし、私が得ているのは次のとおりです。

divsomestuffdiv

「スクリプト」部分のみを置き換えて、他のマークアップと属性文字を保持するにはどうすればよいですか?

4

3 に答える 3

11

タグの開始ブラケットと終了ブラケットを保持しています。だからこれを試してください:

o.replace(/(<\s*\/?\s*)script(\s*([^>]*)?\s*>)/gi ,'$1div$2')
于 2009-05-11T20:41:34.940 に答える
2

これには、正規表現よりも DOM メソッドの方が適しています。このようにして、ドキュメントを平文ではなく論理的に操作します。

var els = document.getElementsByTagName('script');
for (var i = 0, el; el = els[i]; i++) {
    var new = document.createElement('div');
    new.type = el.type;
    el.parentNode.replaceChild(el, new);
}
于 2009-05-11T20:42:54.050 に答える
2

素朴だが読みやすい方法は、私が推測する2つのパスでそれを行うことであり、最初に一致して置き換えます

<script

別れ

<div

そして、一致する別の

</script>

そしてそれを

</div>

于 2009-05-11T20:43:48.197 に答える