2012-10-03 57 views
0

某種類型的,我需要的正則表達式來刪除腳本標籤允許在JavaScript

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

之類的正則表達式,我將用它來代替script標籤,除非它符合特定類型的腳本,我們在配色方案我的應用程序,必須通過,但注入任何其他必須刪除。

這是允許的

<script type="colorScheme">..</script> 

什麼都必須拆除,但我不能完全得到向右正則表達式,我也不能在DOM節點改變這個。

文檔片段不會將頭部和標籤包含在頭部。你們在評論請看Can I load an entire HTML document into a document fragment in Internet Explorer?

謝謝你!

+3

爲什麼要這是一個正則表達式? – Blender

+1

這應該用解析器來完成,而不是正則表達式。 – x1a4

+3

請不要使用正則表達式解析HTML,因爲它會[驅動你的į̷̷͚̤̤̖̦͍͗̒̈̅̄n̨͖͓̹͍͎͔͈̝͐ͪ͛̄͛ṣ̷̵̞̦ͤ̅̉̋ͪ͑͛ͥ͜a̷̘͖̮͔͎͛̇̏̒͆̆͘n͇͔̤̼͙̩͖̭ͤ͋̉͌͟eͥ͒͆ͧͨ̽͞҉̹͍̳̻͢](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 )。改爲使用[HTML解析器](http://stackoverflow.com/questions/292926/robust-mature-html-parser-for-php)。 –

回答

0

根據我的理解,您需要的是一個正則表達式,它匹配XXX可以是一組有效值的正則表達式。

如果是這樣的話,你需要這樣的正則表達式:

/<script type="(value1|value2|value3)">(.*?)<\/script>/img 

在Javascript中:

var regexp = /<script type="(value1|value2|value3)">(.*?)<\/script>/img; 
var match = regex.exec(regexp); 
console.log('type: ' + match[1]); 
console.log('body: ' + match[2]); 

希望幫助:)

+0

以及即時尋找做反IO想做一個空字符串替代腳本標記,除非它匹配colorScheme類型。之後,我將這些代碼注入一個空的iframe中 –

+0

您可以編輯您的回覆嗎?代碼在評論中沒有顯示槽 –

+0

好吧,如果不匹配,請執行以下操作:s/