我想在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属性插入浏览器,则浏览器将不会执行脚本,并且可能永远不会执行该脚本,特别是因为未将元素添加到文档中。