如何使用Javascript删除整个脚本部分

时间:2010-09-19 10:21:50

标签: javascript regex

如果我有像

这样的字符串
<p>this is some content</p><script>alert('hello');</script>

我想获取没有任何脚本的字符串,但是使用格式化,我该怎么做?

<p>this is some content</p>

我试过

var html = "<p>etc</p><script>alert('hello world');</script>".replace("<script*</script>", "p");

但这给了我类似的东西

".replace("", "p"); $('#blogDescription').html(html); }); }); 

3 个答案:

答案 0 :(得分:2)

您可以在不使用正则表达式的情况下执行此操作,通过使用一些DOM操作,您可以运行从字符串创建的DOM片段中的每个元素,并删除script标记。

var html = "<p>etc</p><script>alert('hello world');</script>";

var container = document.createElement('div');
container.innerHTML = html;

function stripScript(parent){
  var elements = parent.children;

  for(var i = 0; i < elements.length; i++){
    if(elements[i].nodeName === 'SCRIPT'){
      parent.removeChild(elements[i]);
    } else if(elements[i].children.length > 0){
      stripScript(elements[i]);
    }
  }
}

stripScript(container);

console.log(container.innerHTML);

或者使用jQuery

var html = "<p>etc</p><script>alert('hello world');</script>";

container = document.createElement('div');
container.innerHTML = html;
$(container).find('script').remove();

console.log(container.innerHTML);

答案 1 :(得分:0)

尝试使用此

/<script\b[^>]*>(.*?)<\/script>/i

答案 2 :(得分:0)

var html = "<p>etc</p><script>alert('hello world');</script>".replace("<script>").replace("</script>");