使用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