1

HTMLタグ付きの文字列があります。

var str = '<a href="www.com">text</a>
<script>
//some code etc
</script>
............... etc
';

js の replace() 関数で正規表現を使用して <script>....</script> を削除する必要があります。それを行う方法を理解できませんでした。

私の努力は次のとおりです。

/(<script).(</script>)/m 
/<script.*>([\s\S]*)</script>/m
/(<script)*(</script>)/
/<script*</script>/

成功しない =(

4

2 に答える 2

2

試す...

/<script>[\s\S]*<\/script>/

これが任意のHTMLの場合は、代わりにDOM操作メソッドの使用を検討してください。

var fauxDocumentFragment = document.createElement("div");

fauxDocumentFragment.innerHTML = str;

var scriptElements = fauxDocumentFragment.getElementsByTagName("script");

while (scriptElements.length) {
    scriptElements[0].parentNode.removeChild(scriptElements[0]);
}

運が良ければ、新しいブラウザをサポートするだけでよいのであれば、...

var fauxDocumentFragment = document.createElement("div");

fauxDocumentFragment.innerHTML = str;

[].forEach(fauxDocumentFragment.querySelectorAll("script"), function(script)
    script.parentNode.removeChild(script);
});
于 2013-01-20T22:52:16.823 に答える
1

次のことを試すことができます。

str.replace(/<script.*?>.*?<\/script>/m, "");
于 2013-01-20T22:52:49.943 に答える