1

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

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]/
4

3 回答 3

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
于 2012-08-10T08:39:20.340 回答
3

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

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

于 2012-08-10T08:40:27.237 回答
0

也许

/[0-1]{0,1}[0-9]:[0-5][0-9]:[0-5][0-9] (AM|PM)/
于 2012-08-10T08:41:17.507 回答