0

我查看了一些正则表达式时间问题,但没有找到我需要的问题,而且我对如何编写正则表达式表达式一无所知。

我需要这样的时间值来传递:

  • 上午 06:03:05
  • 下午 06:03
  • 早上 6:3:5

这个正则表达式似乎可以解决这个问题(我在这里找到了, 但我还需要 AM/PM 部分,但它也可以不区分大小写。

([0-1]?\d|2[0-3]):([0-5]?\d):([0-5]?\d)

所以总结一下我在这个正则表达式中需要什么:

  • 单个数字 h:m:s 可接受
  • 两位数 hh:mm:ss 可接受
  • 需要 AM/PM 但不区分大小写
  • 如果 AM/PM 部分可以输入为 a 或 p 会很好,但不需要
  • 秒是可选的
  • 不能接受 24 小时制

任何帮助将不胜感激。

4

2 回答 2

2

您提供的正则表达式支持 24 小时时间,以下我严格按照您的要求

(1[012]|0?\d):[0-5]?\d(:[0-5]?\d)?\s+[AaPp][Mm]?
于 2012-07-02T17:19:02.680 回答
1

只需?在秒部分之后和\s+[aApP][mM]re 的末尾添加:

([0-1]?\d|2[0-3]):([0-5]?\d)(:([0-5]?\d))?\s+[aApP][mM]

当您不需要 24h 格式时,请更改第一部分:

(1[0-2]|0?\d):([0-5]?\d)(:([0-5]?\d))?\s+[aApP][mM]
于 2012-07-02T17:17:08.470 回答