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 回答