js正则表达式从文本字符串中删除某些标记

时间:2013-01-20 22:50:25

标签: javascript regex replace

我有一些带有html标签的字符串。

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

我需要删除&lt; script&gt; ....&lt; / script&gt;使用resxp和js的replace()函数。无法想象如何做到这一点。

我的努力是:

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

没有成功=(

2 个答案:

答案 0 :(得分: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);
});

答案 1 :(得分:1)

您可以尝试以下操作:

str.replace(/<script.*?>.*?<\/script>/m, "");