PHP:时间验证RegEx?

时间:2010-10-20 08:50:07

标签: php regex

我正在使用以下正则表达式来验证格式dd/mm/yyyy在php中的日期:

preg_match("/([0-9]{2})\/([0-9]{2})\/([0-9]{4})/", $e_startdate, $matches)

但是,以10:20 PMAM格式验证时间的正则表达式是什么。我想要一个正则表达式,它将为我验证以下格式。

<number><number><colon><number><number><space><AM or PM>

由于

5 个答案:

答案 0 :(得分:5)

您可以使用正则表达式:

(0[0-9]|1[0-2]):[0-5][0-9] [AP]M

答案 1 :(得分:3)

以下内容应验证您请求的格式:

preg_match("/(\d{2}):(\d{2}) (AM|PM)/", $e_startdate, $matches);

请注意,这不一定是有效时间。你可以输入像上午32:62这样的东西。你需要这样的东西进行时间验证:

preg_match("/(0?\d|1[0-2]):(0\d|[0-5]\d) (AM|PM)/i", $e_startdate, $matches);

注意匹配整个事情不区分大小写(就像我在第二个例子中所做的那样)。否则小写ampm等不起作用。

答案 2 :(得分:2)

正则表达式:

(([0-1][0-9])|([2][0-3])):([0-5][0-9]):([0-5][0-9])

以MySQL时间格式验证时间。 24小时时间冒号分隔小时:分钟:秒hh:mm:ss

比赛:09:30:00 | 17:45:20 | 23时59分59秒

非比赛:24:00:00

答案 3 :(得分:1)

/ \ d {2}:\ d {2}(AM | PM)/

答案 4 :(得分:0)

我从难以捉摸的答案开始,但需要更多的灵活性。这个分钟是可选的,以及AM / PM之前的空间

/(0?\d|1[0-2])(:(0\d|[0-5]\d))?[ ]?(A|P)M/i