2009-09-13 44 views
1

任何人可以幫助我用正則表達式正則表達式腳本中刪除 - 易

我想<Script ?????></script>

之間我使用ASP來去除一切,visualscript

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

這應該工作(我認爲)但它不適合我,任何幫助將不勝感激!

感謝

更新:?

我已經做到了這樣,現在刪除<取代SCRIPT>內容

(/ <腳本> [\ S \ S]?</script>/ig,'')

但是如果我有< script language =「」>內容</script>它不起作用?腳本也在多線上

有什麼想法嗎?

回答

0

怎麼是這樣的:

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

如果腳本標記有一個屬性,這將不起作用。 – jimyi 2009-09-13 20:17:38

+0

嗨jskaggz感謝您的答覆 - 腳本給我一個錯誤的1和2 – 2009-09-13 20:18:00

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

你錯過了一個點;)

2

工作的呢?

​​
2

我注意到除了Benjamin Ortuzar指出的缺失點之外還有一些其他的東西。

在您原來的正則表達式中,「/< script.*?>*?< \/script>/ig」,打開尖括號後面有空格;空格在正則表達式中很重要,所以您可能需要刪除這些空格。

此外,您還需要添加s修飾符來激活「單行模式」,這意味着換行符將由點匹配。

所以我們最終得到:

/<script.*?>.*?<\/script>/igs 
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());"> 
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. alert('hello');
  3. </script>

第2場

  1. <script type="text/javascript>
  2. 警報( 'hello2');
  3. </script>

希望這有助於。