2012-02-22 18 views
0

我一直在尋找最新的正則表達式了一段時間,但不是我whhenever拿出一個regeular表達似乎總有是一個問題。日期正則表達式似乎無法獲得強大的日期正規表現

表達低於

^(0?[1-9]|[12][0-9]|3[01]) 

在什麼日期的正則表達式看起來像在DDMMM格式的任何幫助嗎?

+1

'ddMMM'→'22Feb'? – 2012-02-22 09:29:43

回答

0

我從某處閱讀下面的示例。

比方說,我們想要以mm/dd/yy格式匹配日期,但我們希望讓用戶選擇日期分隔符。 快速解決方案是\d\d.\d\d.\d\d。一開始似乎很好。

\d\d[- /.]\d\d[- /.]\d\d是一個更好的解決方案。這個正則表達式允許使用短劃線,空格,點和正斜槓作爲日期分隔符。

這個正則表達式還很不完美。它匹配99/99/99作爲有效日期。

[0-1]\d[- /.][0-3]\d[- /.]\d\d是領先一步,但它仍然會匹配19/39/99。

還有一個更好的,

[0-1][1-9][- /. ]?(0[1-9]|[12][0-9]|3[01])[- /.]?(18|19|20|21)\d\d$ 
0

我想出了這一點,這是很長,但它涵蓋了大部分的情況下,除閏年:

^((0?[1-9]|[12][0-8])[/.-](0[1-9]|1[0-2]))|((29|30)[/.-](0[13-9]|1[0-2]))|(31[/.-](0[13578]|1[02]))$

  • 每月有28天(你需要檢查你的代碼中某種功能的閏年)。

    (0?[1-9]|[12][0-8])#天:01〜28

    [/.-]#分離

    (0[1-9]|1[0-2])#個月:1〜12

  • 每個月除了月,有29天和30天:

    (29|30) #天:29或30

    [/.-] #separator

    (0[13-9]|1[0-2])#個月:1,和3〜12

  • 只有一些個月有31天:(一月,三月,五月,七月,八月,十月和十二月)

    31#天:31

    [/.-]#隔板

    (0[13578]|1[02])#個月:01,03,05,07,08,10,12