正则表达式删除脚本和样式标签+内容Javascript

时间:2014-10-24 17:25:09

标签: javascript html regex

我有一个场景,我有完整的网页有javascript,css和html。我需要完全删除脚本和样式标记及其内容。我使用以下正则表达式在PHP中实现了这一点:

 $str = preg_replace('#<script(.*?)>(.*?)</script>#is', '', $html); 
 preg_replace('#<style(.*?)>(.*?)</style>#is', '', $str);

但是无法在javascript中完成它。我希望有相同的

 <script(.*?)>(.*?)</script> //in javascript

我想在html中替换它们出现的所有内容。 我用这个

删除了其他html标签
 pureText.replace(/<(?:.|\n)*?>/gm, ''); //just a reference

2 个答案:

答案 0 :(得分:5)

  

我想要相当于   <script(.*?)>(.*?)</script> //in javascript

/<script([\S\s]*?)>([\S\s]*?)<\/script>/ig

在正则表达式中使用[\S\s]*?代替.*?因为javascript不支持s修饰符( DOTALL修饰符)。 [\S\s]*?将非贪婪地匹配任何空格或非空格字符零次或多次。

答案 1 :(得分:3)

Don't use regex为此。它比操纵DOM要慢得多且不太可靠。

var scripts = document.getElementsByTagName('script');
var css = document.getElementsByTagName('style');

for(var i = 0; i < scripts.length; i++)
{
    scripts[i].parentItem.removeChild(scripts[i]);
}
for(var j = 0; j < css.length; j++)
{
    css[j].parentItem.removeChild(css[j]);
}