PHP正则表达式的时间

时间:2012-08-10 08:36:47

标签: php regex cakephp

我有时间代表这些可能性:

7:15:00 AM
07:15:00 AM

7:15:00 PM
07:15:00 PM

如何调整下面的正则表达式以使其更合适?我需要添加的规则是前面的可选0和可选空间AM或空格PM。

/[0-2][0-9]:[0-5][0-9]:[0-5][0-9]/

3 个答案:

答案 0 :(得分:4)

使用(?)运算符或{0,1}

   /[0-2]?[0-9]:[0-5]?[0-9]:[0-5]?[0-9]\s?[AM|PM]/i

更好的方法:查看strtotime()

编辑:

我认为这是更好的一个因为我认为[0-2]?[0-9]无效正则表达式

   /1[012]|0?[1-9]:[0-5]?[0-9]:[0-5]?[0-9]\s?[AM|PM]/i

答案 1 :(得分:3)

为什么不使用PHP的strtotime函数来完成所有工作呢?

该函数希望给出一个包含英文日期格式的字符串,并尝试将该格式解析为Unix时间戳(1970年1月1日00:00:00 UTC以来的秒数),相对于现在给出的时间戳,或者现在没有提供当前时间。

答案 2 :(得分:0)

也许

/[0-1]{0,1}[0-9]:[0-5][0-9]:[0-5][0-9] (AM|PM)/