2012-07-20 40 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]