2010-01-16 26 views
7

我希望HH:MM:SS AM/PM的正則表達式在這裏HH必須只有1-12,MM必須60分鐘,SS照常(60秒)我有任何它正確的... ?正則表達式的時間

+0

您的'HH'符號意味着小時必須填零並從00開始,但您在後面的問題中與此相矛盾。你究竟是什麼意思?你可以更精確一點,也許有一些匹配和失敗字符串的例子嗎? – 2010-01-16 08:05:19

回答

12
(0[1-9]|1[0-2]):([0-5][0-9]:[0-5][0-9]|(59|44|29):60) (AM|am|PM|pm) 
+2

+1閏秒。你錯過了AM/PM,但這很容易。 – 2010-01-16 08:02:29

+2

閏秒在上午和下午都會發生,具體取決於您的時區(如果您是+ GMT,則發生在上午)。 – mynameiscoffey 2010-01-16 08:21:47

+0

只需要am/pm小型號就可以了: (0 [1-9] | 1 [0-2]):([0-5] [0-9]):([0-5] [0 -9] | 60)(上午|下午|上午|下午) – 2010-01-16 08:57:22

8
/^([1-9]|10|11|12):[0-5][0-9]:[0-5][0-9] [AP]M$/ 
+0

優雅!爲簡潔起見+1。 – 2010-01-16 08:19:30

+0

不支持問題中給出的HH表示法,他也遵循「HH必須是1-12」,所以誰知道。也可能想要添加一個閏秒的例子,儘可能少見。 – mynameiscoffey 2010-01-16 08:24:08

+0

它當然可以縮短:/ ^([1-9] | 1 [0-2])(:[0-5] [0-9]){2} [AP] M $ /但我認爲它使閱讀變得更加困難。 ;) – 2010-01-16 08:24:40

5

如果你希望能夠有零填充可選以及閏秒:

/^((0?[1-9])|(1[0-2])):[0-5]\d:(([0-5]\d)|(60)) [AP]M$/ 

細目:
(0?[1-9]|1[0-2]) 1-9(帶有可選的前導零)或10-12
[0-5][0-9] 00-59(第一位0-5,第二位0-9)
([0-5][0-9])|(60)閏秒
[AP]M AM/PM

+0

更新,感謝您的接觸 - 這是我得到的不先測試它。 – mynameiscoffey 2010-01-16 08:45:34

+0

很好的正則表達式! – jspcal 2010-01-16 08:52:38