使用JS正则表达式从html删除所有脚本标签

我想在pastebin上将脚本标签从此html中剥离

http://pastebin.com/mdxygM0a

我尝试使用以下正则表达式

html.replace(/<script.*>.*<\/script>/ims, " ")

但是它不会删除html中的所有脚本标签。它仅删除嵌入式脚本。请我需要一个可以删除所有脚本标签(行内和多行)的正则表达式。如果对我的样本http://pastebin.com/mdxygM0a进行测试,将不胜感激

谢谢

回答:

尝试使用正则表达式删除HTML标记是有问题的。您不知道其中包含什么脚本或属性值。一种方法是将其作为div的innerHTML插入,删除所有脚本元素并返回innerHTML,例如

  function stripScripts(s) {

var div = document.createElement('div');

div.innerHTML = s;

var scripts = div.getElementsByTagName('script');

var i = scripts.length;

while (i--) {

scripts[i].parentNode.removeChild(scripts[i]);

}

return div.innerHTML;

}

alert(

stripScripts('<span><script type="text/javascript">alert(\'foo\');<\/script><\/span>')

);

请注意,目前,如果使用innerHTML属性插入浏览器,则浏览器将不会执行脚本,并且可能永远不会执行该脚本,特别是因为未将元素添加到文档中。

以上是 使用JS正则表达式从html删除所有脚本标签 的全部内容, 来源链接: utcz.com/qa/427781.html

回到顶部