2012-07-20 43 views
2

我想返回的時間格式HH:MM AM | PM(上午11:45),或任何時候,該正則表達式匹配:時間正則表達式的問題

String meridian = "^(0[1-9]|[10-12]):(0[1-9]|[11-59])\\s(AM|PM|am|pm)"; 

但它不是爲我工作。

+2

'[10-12]'和'[11-59]'不要吝嗇你認爲他們這樣做。字符組中的'-'不適用於兩位數字,所以'[11-59]'表示一個'1'或'1-5'或'9'。 – mellamokb 2012-07-20 13:44:54

+4

爲什麼你想使用正則表達式而不是簡單地試圖解析值? – 2012-07-20 13:45:33

回答

4

[10-12]相當於[1012]這相當於[012]

[11-59]同樣相當於[123459]

使用:

^(0[0-9]|1[0-2]):[0-5][0-9]\\s(AM|PM|am|pm)$ 
+0

如何修改正則表達式呢? – pervs123 2012-07-20 13:47:40

1

[...]是一組字符,而不是數字的。

要匹配0112之間的所有數字,請使用(0[1-9]|1[0-2])

要匹配0059之間的所有號碼,使用[0-5][0-9]