2011-06-07 69 views
0

如何我可以使用正則表達式此行正則表達式來刪除SRC = 「*」

<script type="text/javascript" src="../assets/default/js/jquery-1.4.2.min.js"> 

刪除

src="../assets/default/js/jquery-1.4.2.min.js" 

+0

你使用哪種正則表達式? – 2011-06-07 21:09:06

回答

2

沒有指定一個正則表達式的方言,但是這一次應該在大多數工作:

src=".*?" 
+0

我也認爲這是解決方案,但這返回了不同的東西。您可能不想使用貪婪的'。*' – shinji14 2011-06-07 21:03:46

0

使用src=".*?"在更換和用空字符串替換。

-1

這裏是我的刺吧:

s/\s*src="[^"]*"// 

那一個還刪除了 'SRC' 之前的任何空白(通過 '\ S *')。

1

雖然我需要the usual disclaimer about parsing HTML with regex到前言本,下面應該適用於輸入字符串非常相似,你給的例子:

/src=(["']).*?\1/ 

你沒有說你所使用的正則表達式語言,但更換不管上面的模式與空字符串匹配。

這個版本的主要優勢在於,它可以同時接納src="..."src='...',但不src="...'src='..."。它也不會被諸如src="...foo='bar'..."之類的東西拋出,儘管這不太可能出現。

+0

@Ted - 您是對的。我怎麼想的?謝謝,編輯。 – 2011-06-07 21:03:02

-1

解決方案使用sed的

sed 's/\(^.*\) src.*/\1>/' 
<script type="text/javascript"> 
1

如果你這樣做是爲了防止鏈接到外部腳本時,不要。它不會工作。

  • 內聯腳本可以很容易地注入一個新的腳本標記或以其他方式加載外部腳本。
  • 任何有理智的正則表達式將處理字符編碼的所有變化,多src="…"屬性(法律依據規範我懷疑它;?它的工作原理我敢打賭),瀏覽器解析錯誤等
  • 沒有正則表達式可以處理像正確匹配引號之類的東西。

你會得到期待:

<!-- this is even in-spec, except for the made-up attributes fakeout and oops. 
    a trivial out-of-spec bit of fun: what happens if we drop the final quote? 
    I bet browsers would still figure it out. --> 
<script type="text/javascript" fakeout="src=" oops="" src 
                 ="http://example.com/oops.js"> 
    document.write("<script sr" + 'c="http://example.com/oops.js"></script>"); 
</script> 

現在,如果不是你只是想找到所有站點中的外部引用的腳本你維護(例如,看是否一個隨機腳本仍然使用),那麼許多其他答案都可以。

+0

有趣的知道這一點,但我不這樣做。 – shinji14 2011-06-07 21:11:08

+0

@Vanilla:這將有助於知道你*在做什麼。另外請記住,SO問題/答案旨在幫助那些未來絆倒他們的人,所以我認爲解釋此警告非常重要。 – derobert 2011-06-07 21:13:55

+1

我同意。一個正則表達式對於抓取一堆你自己的文件來說是完全正確的,但不應該被用來對腳本注入進行消毒。 – 2011-06-07 21:15:51