【问题标题】:Regex To Remove Script And Style Tags + Content Javascript正则表达式删除脚本和样式标签 + 内容 Javascript
【发布时间】:2014-12-20 14:21:24
【问题描述】:

我有一个场景,我有完整的网页,其中包含 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

【问题讨论】:

    标签: javascript html regex


    【解决方案1】:

    我想拥有相当于 &lt;script(.*?)&gt;(.*?)&lt;/script&gt; //in javascript

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

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

    【讨论】:

      【解决方案2】:

      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]);
      }
      

      【讨论】:

      • 那值得一试,不过我是通过 ajax 动态获取 html 文档的。
      猜你喜欢
      • 2015-10-05
      • 1970-01-01
      • 1970-01-01
      • 2012-12-16
      • 1970-01-01
      • 1970-01-01
      • 2011-03-17
      • 2013-12-03
      • 1970-01-01
      相关资源
      最近更新 更多