2010-04-20 58 views
1

我正在與其他幾個開發人員在一個網站上工作,我們遇到了問題,人們通過使用URL相對於站點根的AJAX調用提交JavaScript代碼。例如/主頁/索引如果該網站託管在虛擬目錄中,則不起作用。正則表達式搜索文本沒有先前由特定的字符串

爲了解決這個問題,我們使用一個$ .url()方法將它轉換爲完整路徑,例如,

$("#container").load($.url("/Home/Index")) 

我想寫一個單元測試,將搜索每個JavaScript文件,並找到$ .url方法沒有被使用的地方。唯一的問題是,我似乎無法寫一個正則表達式來做到這一點。我曾嘗試以下方法:

(?!\$\.url\()"(/\w*)+" 

但這不起作用。我找不到一種方法來說我不要想在$ .url前面。有誰知道這是否可能?請注意,我需要與.NET兼容的正則表達式。

謝謝。

回答

3

你只需要你的先行更改爲回顧後:

(?<!\$\.url\()"(/\w*)+" 
+0

感謝您的回覆,我意識到我原來的正則表達式是錯誤的:w後的星號是加號,在我修好之後,它對你的修改似乎很有效。它被這樣的情況愚弄: document.location = $ .url(「/ Report /」+ $(「#ddlObjectName」).val()+「/ New」); 有什麼簡單的方法這是什麼?如果有辦法我可以檢查一個加號,那麼我可以排除這場比賽,但我不知道該怎麼做 – James 2010-04-22 16:06:46

+0

你只是想*找到*有問題的項目,不匹配整個事情,這個應該足夠了:'(?<!\ $ \。url \()「/ \ w +'。 – 2010-04-22 17:18:19

0

爲什麼你不只是尋找這樣的東西?

\.load\("(/\w*)+"\) 

還是有東西能逃脫我?

+0

嗨,我可能最終會做這樣的事情。但問題是load方法只是我們用來處理URL的幾種方法之一。例如,還有$ .ajax方法。每種情況都需要一個單獨的正則表達式。還有一些情況下,URL被作爲變量傳遞,並且不會被發現。如果可能的話,我希望有一個通用的解決方案,但結果比我預期的要難。 – James 2010-04-20 15:51:51

+0

匹配不存在的東西總是很麻煩。我已經在PHP中嘗試了這個(我不是.NET的人),而且它也沒有工作。它似乎簡單地忽略了不匹配的子模式,並將正則表達式處理爲「(/ \ w *)+」。我現在能夠想到的唯一解決方法是與(。{0,6})「(/ \ w *)+」匹配,然後檢查第一個子模式是否等於「$ .url( 「希望這是有道理的, – Janci 2010-04-20 16:40:58

相關問題