【问题标题】:24 hour time regex fails to invalidate 3 digit hours24 小时时间正则表达式无法使 3 位数小时无效
【发布时间】:2014-12-23 13:38:29
【问题描述】:

我正在尝试使用 PHP 正则表达式验证 24 小时时间 HH:MM
我发现了很多关于它的问题,例如:

但它们都未能使 3 位数小时无效,例如 111:00(在线测试人员说它们匹配,这是因为正则表达式不考虑第三位数的存在)。这是一个例子:https://www.regex101.com/r/cO9aE7/1

我怎样才能纠正它们以使这种情况无效?

【问题讨论】:

  • 使用开始和结束分隔符 ^(2[0-3]|[01][0-9]):[0-5][0-9]$
  • 为什么不发布正则表达式
  • @EdHeal 他发布了 regex101 链接,也很棒
  • 谢谢@donald123,它工作正常。

标签: php regex time


【解决方案1】:

只要它是字符串中唯一的东西,这个正则表达式就会匹配 24 小时样式时间:

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

或者,这将匹配字符串中任意位置的 24 小时时间:

\b([01]\d|2[0-3]):[0-5]\d\b

【讨论】:

    【解决方案2】:
    ^(2[0-3]|1[0-9]|0[0-9]|[^0-9][0-9]):([0-5][0-9])$
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-17
      • 2020-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-15
      • 1970-01-01
      相关资源
      最近更新 更多