2016-10-12 152 views
0

我一直在測試URL重寫的正則表達式,並遇到2的工作,但我想知道哪一個更好。或者如果它們都不好,這將是處理重定向要求的最佳方式。正則表達式網址重寫

本質上我正在尋找重定向任何具有共同根路徑的網址。

例:

/pages/enteral-feeding-pump 
/pages/enteral-feeding-pump/ 
/pages/enteral-feeding-pump/1234 
/pages/enteral-feeding-pump/1234/ 
/pages/enteral-feeding-pump/1234/1234 
/pages/enteral-feeding-pump/1234/1234/ 

這些是2我:

^/pages/enteral-feeding-pump/?(?:[^\/]+\/?)*$

^/pages/enteral-feeding-pump/?(?:.*)

我測試了,而他們的工作,但老實說,我不知道哪一條是最佳路線。

+1

不知道你的問題是什麼,但我想調出的問題與正則表達式。兩者都會匹配'/ pages/enteral-feeding-pump1234/24'。由於它沒有和其他的一樣的核心路徑,我假設這不是你想要的。這個正則表達式應該爲你解決'^ \/pages \/enteral-feeding-pump(?:$ | \ /(?:。+)?)'。 [正則表達式示例](https://regex101.com/r/kzLWnW/1) – Nathan

+0

我注意到同樣的問題,並試圖找出它!感謝這個正則表達式,一個快速測試顯示它的工作原理。如果您將其設置爲問題的答案,我會將其標記爲已接受的答案。謝謝! – darrinb

回答

0

正則表達式存在一個小問題。不知道這件事有多大,但值得注意。

兩個正則表達式將匹配下列網址:

/pages/enteral-feeding-pump1234/24

因爲它不具有相同的核心路徑,我假設你不會要匹配這個。所以下面,我對你提供的正則表達式進行了小小的修改,以防止這種情況發生。

^\/pages\/enteral-feeding-pump(?:$|\/(?:.+)?)

我從你提供的那些唯一改變的是我enteral-feeding-pump後直接要求線($)的/或結束。

Regex Example