【问题标题】:Regex pattern for EXACTLY HH:MM:SS time StringEXACTLY HH:MM:SS 时间字符串的正则表达式模式
【发布时间】:2014-11-10 11:45:51
【问题描述】:

我想以精确的hh:mm:ss 字符串验证刺痛时间格式。
我的意思是确切地说
每个小时/分钟/秒必须是 2 位数字
只接受逻辑值 比如

  • 小时 [从 00 到 23]
  • 分钟 [从 00 到 59]
  • 秒 [从 00 到 59]

当我检查Regex pattern for HH:MM:SS time string
答案接受hh:mm:ss 字符串,但也接受2:3:24 之类的情况

提前致谢

【问题讨论】:

  • 这不是正则表达式,但您可以随时检查字符串的长度,并确保它是 9。
  • 您明白hHmM 有不同的含义吗?

标签: java regex validation datetime


【解决方案1】:

你的正则表达式是,

(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)

这将匹配“20:30:30”和“2020-05-29 20:30:30 -0600”。

DEMO

如果您只想匹配 24 小时的字符串,请使用以下内容:

^(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)$

这将仅匹配“20:30:30”和“2020-05-29 20:30:30 -0600”。

DEMO

Java 正则表达式是,

(?:[01]\\d|2[0123]):(?:[012345]\\d):(?:[012345]\\d)

而且对于专门的 24 小时字符串,

^(?:[01]\\d|2[0123]):(?:[012345]\\d):(?:[012345]\\d)$

【讨论】:

  • 此正则表达式无法匹配 20:30:30,因为 HH 处 20 的值被视为无效。
  • 另一个有效的:^((?=(?:\D*\d\D*){6})(?:[01]\d|2[0-3]):(?:[0-5]\d):(?:[0-5]\d))$DEMO
  • @theftprevention 不确定作者是否编辑了他们的答案,但您可以在演示中看到“20:30:30”匹配得很好。你能确认这个问题吗?谢谢!
  • @JoshuaPinter 答案可能已被编辑,或者我可能错了!无论哪种方式,我的评论都不再相关。这差不多是六年前的事了。当你用正则表达式解析它时,时间过得飞快!
  • @theftprevention 哈哈。先生打得好!
【解决方案2】:

试试这个:

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

Demo available here.

【讨论】:

    【解决方案3】:

    你想要的模式是:

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

    这是HH:MM:SS24小时格式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      • 1970-01-01
      • 1970-01-01
      • 2019-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多