我絕對討厭RegEx,我真的需要學習它 - 它非常強大。這裏的問題:RegEx的另一個問題
我試圖重寫URL在IIS和我有這個默認的正則表達式:
^([^/]+)/?$
然而,這確實讓這樣的事情business/profile.html
通過,但它通過讓business-profile.html
。
我如何改變它,以便它通過讓前者?
感謝
我絕對討厭RegEx,我真的需要學習它 - 它非常強大。這裏的問題:RegEx的另一個問題
我試圖重寫URL在IIS和我有這個默認的正則表達式:
^([^/]+)/?$
然而,這確實讓這樣的事情business/profile.html
通過,但它通過讓business-profile.html
。
我如何改變它,以便它通過讓前者?
感謝
如果你想了解和學習正則表達式,學習當你困惑,他們在做什麼,以打破其含義。這是相同的正則表達式,擴展格式。
^ # Start of the string
( # Take a group...
[^/]+ # of one or more characters (the +) that are NOT the/character
) # end of the group
/? # an optional '/'
$ # End of string
所以這個正則表達式匹配:
/
字符它/
所有字符串要「修復」正則表達式,我們需要知道「通過」的真正含義。你的意思是「匹配正則表達式嗎?」
(旁註:一個巨大的資源是http://www.regular-expressions.info/ - 它提供了正則表達式使用一個偉大的跨工具的參考和指導)
原來RE的目的似乎是「禁止裏面斜線任何URL」(一可選地允許在末尾)。如果你的目的是「禁止絕對沒有」,^(.*?)/?$
應該工作(與*?
意味着非貪婪匹配 - RE方言不同,對這種先進的東西,所以我不知道你會支持它)。 @Wrikken已經展示瞭如何允許「內部至多有一個斜線」,並且這清楚地概括爲對於任何固定的「最多N個斜線」。在不知道你想要允許什麼以及禁止什麼的情況下,很難更有幫助!)
你想做什麼?這將導致更好的答案。 – 2010-07-19 23:24:41
我試圖通過使用IIS 7中的URL重寫功能將用戶友好的URL添加到我的網站。 – bear 2010-07-19 23:30:35