2010-11-10 54 views
0

我有另一個問題,她問Stack Overflow,並建議使用正則表達式而不是PHP代碼。不幸的是,我不知道正則表達式,並且在過去和現在嘗試了很多次,沒有成功地理解它。所以希望如果我問得好,這裏有人可以提供幫助。我會很感激。CodeIgniter URI中的模式的正則表達式

我想要實現的是將不同的URI請求路由到不同的地方,4是具體的。什麼是正確的REG EXP符合以下條件:

  • year(例如:2010
  • year-month(例如:2010-nov)(月份由3個字符表示)
  • year-month-day(例如:2010-nov-10
  • year-month-day-string (例如:2010-nov-10-blog-post-title-here

我在PHP中編碼並使用CodeIgniter框架。

問候, 傑森

+0

只是一個提示:如果你的月份是數字而不是縮寫,你會更容易。 – slhck 2010-11-10 14:16:02

+0

我聽到你的聲音。我只需要他們三個字,但我會在下一階段驗證它。 – Jason 2010-11-10 14:18:26

回答

3

由於您稍後將進行驗證。你可以去真正通用:

([0-9]{4})-([a-z]{3})-([0-9]{1,2})-([\w*](-?[\w*])*)

4位數的一年,一個連字符,3字符小寫的字,一個連字符,兩個數字,至少一個字,(可選連字符和另一個詞根據需要重複。)

+0

太棒了!多數民衆贊成什麼需要。所有的作品:)謝謝Hyposaurus! – Jason 2010-11-10 14:51:47

1
  • 年是(19|20)\d\d

  • 年 - 月被(19|20)\d\d\-[a-z]{3}

  • 年 - 月 - 日被(19|20)\d\d\-[a-z]{3}\-[1-3][0-9]

  • 年 - 月 - 日-string是(19|20)\d\d\-[a-z]{3}\-[1-3][0-9]\-[a-z\-]*

糾正我,如果我錯了, 請。另外請注意,對於不真正存在的月份名稱或日期沒有驗證。

+0

謝謝,我想我應該只是把它:4digits破折號3chars破折號2digits破折號字符串 – Jason 2010-11-10 14:28:05

+0

這就是它歸結爲;) – slhck 2010-11-10 14:38:07