2013-03-05 34 views
1
http://mywebsite/index.aspx?db=DAYTON#id%3D7304%3Bpage%3D1%3Bview%3Dpages 

http://mywebsite/#id%3D3D7304%3Bpage%3D1%3Bview%3Dpages 

上述兩個URL轉到完全相同的位置,但樣式不同。我試圖寫出一個單行表達式,無論引用哪種類型的URL,都將創建匹配。我一直主要集中於一切後,「mywebsite /」在不同風格的URL中匹配關鍵字的正則表達式

任何幫助將大大感激!

+3

什麼是語言?當您要求正則表達式問題時,請標記語言或工具! – nhahtdh 2013-03-05 17:20:43

+3

鑑於這些片段永遠不會到達網絡服務器,所以語言是'javascript'是非常安全的。 – Wrikken 2013-03-05 17:23:47

+0

你想要一個正則表達式匹配這兩個網址或其他網址嗎? – Dukeling 2013-03-05 17:31:52

回答

0

這裏有一個一個班輪正則表達式:

^http:\/\/mywebsite\/(index\.aspx\?db=[A-Z]+)?#((id%\w+(%3B)?)|(view%\w+(%3B)?)|(page%\w+(%3B)?))*$

它將接受一個可選的index.aspx?db=(設置一些大寫值),您的網站和3個變量的任意順序使用:idviewpage

多彩解釋演示在這裏:http://regex101.com/r/jB2jS3

0

首先,解碼URL以使事情變得更加容易:

http://mywebsite/index.aspx?db=DAYTON#id=7304;page=1;view=pages 
http://mywebsite/#id=3D7304;page=1;view=pages 

現在你可以寫兩個正則表達式匹配每個path|運營商(Demo)將它們組合起來:

http://mywebsite/(index.aspx\?db=(\w+)#id=(\d+);page=(\d+);view=(\w+)|#id=3D7304;page=1;view=pages) 

如果你的編程語言支持它們,你也可以使用named groups


請注意,如果參數順序發生更改,上述正則表達式將與URL不匹配。

我建議,如果你能不能請你使用URL解析器。

+0

如果Web標準說參數可以以任何順序(它所做的),那麼以有效查詢打破它的方式編寫您的網站將是一個壞主意。 – JDB 2013-03-05 18:02:26

相關問題