preg_match正则表达式的时间像HH:MM和H:MM

时间:2014-05-08 11:25:04

标签: php regex preg-match

我正在使用此正则表达式

preg_match("/(2[0-3]|[01][0-9]):[0-5][0-9]/", $time)

它适用于05:00等(0领先)但我想接受0之类的5:00,因为我的mysql字段是TIME并接受我想两个人都给他们,因为他们会这样做。

此外,这应该接受00:30,当然不是24:30

3 个答案:

答案 0 :(得分:1)

通过添加两个问号(可选项)来猜测:

preg_match("/(2?[0-3]|[01]?[0-9]):[0-5][0-9]/", $time)

答案 1 :(得分:1)

试试这个:/^([01]?[0-9]|2[0-3])\:+[0-5][0-9]$/

01:00 valid
 5:00 valid
23:59 valid
30:00 invalid
24:00 invalid
00:00 valid
23:90 invalid

只需添加问号。

答案 2 :(得分:0)

这应该按预期工作:

 preg_match("/^(2[0-3]|[01]?[0-9]):[0-5][0-9]$/", $inputToCheck)
  • 已添加?使0或1前缀可选
  • 添加^和$以确保比较使用整个输入
  • 允许从0:00到24:59
  • 限制24小时格式
  • 允许HH:MM和H:MM格式