24 小时正则表达式无法使 3 位小时无效


24 hour time regex fails to invalidate 3 digit hours

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

  • 验证此格式 - "HH:MM">
  • 将 24 小时格式化的时间与正则表达式匹配

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

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

只要它是字符串中的唯一内容,此正则表达式将匹配 24 小时样式时间:

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

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

'b([01]'d|2[0-3]):[0-5]'d'b
^(2[0-3]|1[0-9]|0[0-9]|[^0-9][0-9]):([0-5][0-9])$