2013-09-27 78 views
0

我正在尋找一些正則表達式模式來重寫URL的幫助。我的URL的結構是:正則表達式匹配IIS中的多個數據URL重寫規則

http://domain.com/[username]/[token]/[userid]/ 

的數據類型包括:

  • 用戶名=字母數字
  • 標記=字母數字
  • 的userid =數字

與數據的一個例子:

http://domain.com/john1975/aBc123/123456789/ 

使用正則表達式我試圖讓每段數據的參考,這樣我就可以改寫爲:

index.asp?username={R:1}&token={R:2}&userid={R:3} 

還銘記保持正則表達式不應該太貪婪,這樣我就可以仍然可以訪問文件,例如:

http://domain.com/about.asp 
http://domain.com/images/logo.png 

我已經試過正則表達式是:

^[0-9a-z]+/[0-9a-z]+/[0-9]+$ 

這不符合我的例子URL。

回答

2

你錯過了正斜槓。正則表達式應該是:

^([0-9a-z]+)/([0-9a-z]+)/([0-9]+)/$ 

我假設你把它標記爲不區分大小寫。如果沒有,那麼你需要

^([0-9a-zA-Z]+)/([0-9a-zA-Z]+)/([0-9]+)/$ 

您還需要支架,所以你可以叫你反向引用,這也是錯的 - 你想匹配的1,2和3,不爲0,這是在比賽整個表達。他們應該閱讀:

index.asp?username={R:1}&token={R:2}&userid={R:3} 
+0

感謝您的幫助。這匹配我的示例URL,但它將所有內容放在第一個參考中。所以我最終得到:'index.asp?username = john1975/aBc123/123456789 /&token =&userid ='。我如何獲得單獨的引用與IIS重寫? – RandomCoder

+1

ha我意識到這一點,並且剛剛編輯了我的答案,將其包含在 - 注意,您需要將您希望提取的規則的各部分括起來。 R:0表示整個事物,然後R:1等表示由括號出現的順序指示的具體匹配。 – alergy

+1

完全按照我的意願工作,非常感謝! – RandomCoder