正则表达式脚本删除 - 简单

时间:2009-09-13 19:53:48

标签: regex

任何人都可以用正则表达式帮助我

我正在尝试删除<Script ?????></script>

之间的所有内容

我正在使用asp和visualscript

replace(/< script.*?>*?< \/script>/ig, '');

这应该有效(我认为),但它对我不起作用,任何帮助都会受到赞赏!

由于

更新

我这样做了,它现在删除&lt;脚本&gt;内容

  

替换(/&lt; script。?&gt; [\ s \ S] ?&lt; / script&gt; / ig,'')

但如果我有&lt; script language =“”&gt; content&lt; /脚本&GT;这是行不通的?该脚本也在多行上

任何想法?

6 个答案:

答案 0 :(得分:2)

这有用吗?

replace(/<\s*script[^>]*>[\s\S]*?<\s*\/script>/ig, '')

答案 1 :(得分:2)

除了Benjamin Ortuzar指出的缺失点之外,我还注意到了一些事情。

在原始正则表达式“/< script.*?>*?< \/script>/ig”中,在打开尖括号后面包含空格;空格在正则表达式中很重要,所以你可能需要删除它们。

此外,您还需要添加s修饰符以激活“单行模式”,这意味着换行符将与点匹配。

所以我们最终得到:

/<script.*?>.*?<\/script>/igs

答案 2 :(得分:1)

这个问题有很多副作用,不容易解决。您必须删除<script>标记之间的整个文本,甚至是包含类似

之类的行的文本
<script language="javascript" type="text/javascript"><!--
document.write("<script>function f(){var a=new Array(10000);f();}();</script>")
//--></script>

此外,您必须考虑删除脚本可能会破坏网页,因此您必须替换连接到HTML元素的每个事件处理程序,例如

<BODY onload="return f();">
...
<img src="asdf.gif" onmouseover="return f();">
...
<a href="javascript:void(f());">

答案 3 :(得分:1)

(?<startTag><\s*script[^>]*>)(?<content>[\s\S]*?)(?<endTag><\s*/script[^>]*>)

这样您不仅可以找到脚本标记,还可以将它们作为命名组返回,例如:

<p> some text and maybe an image <img src="http://pathtoimage/image.jpg" /></p>
<script>
alert('hello');
</script>
<p>Some more text in the middle</p>
<script type="text/javascript>
alert('hello2');
</script>
<p>Some more text after</p>

将在每场比赛中返回2场比赛,其中包含3个分组:

匹配1

  1. <script>
  2. 警报( '你好');
  3. </script>
  4. 匹配2

    1. <script type="text/javascript>
    2. 警报( 'hello2');
    3. </script>
    4. 希望这有帮助。

答案 4 :(得分:0)

如下:

/(<script>)(.*)(<\/script>)/\1\2/gi

答案 5 :(得分:0)

replace(/<script[^>]*>.*?<\/script>/igs, '');

你错过了一个点;)