Php preg_为时间匹配正则表达式,如HH:MM和H:MM

Php preg_为时间匹配正则表达式,如HH:MM和H:MM,php,regex,preg-match,Php,Regex,Preg Match,我把这个正则表达式和 preg_match("/(2[0-3]|[01][0-9]):[0-5][0-9]/", $time) 它可以与05:00等一起使用(以0开头),但我想接受没有0的情况,比如5:00,因为我的mysql字段是时间,接受两者我想让人们两者都给予,因为他们会这样做 这也应该接受00:30,当然不是24:30通过添加两个问号(可选项)来进行猜测: 试试这个:/^([01]?[0-9]| 2[0-3])\:+[0-5][0-9]$/ 01:00 valid 5:00 vali

我把这个正则表达式和

preg_match("/(2[0-3]|[01][0-9]):[0-5][0-9]/", $time)
它可以与
05:00
等一起使用(以
0
开头),但我想接受没有
0
的情况,比如
5:00
,因为我的mysql字段是时间,接受两者我想让人们两者都给予,因为他们会这样做


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

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

试试这个:
/^([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

只需添加一个问号即可。

这应该会像预期的那样起作用:

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

@AbhikChakraborty在花括号后面应该有
+
吗?这不也可以接受74:00、34:00等吗@AbhikChakraborty@Miguel您当前的regexp是否也会捕获字符串中的05:00
55959505:00
?-1找到813个结果,其中包含“preg_match regex for time”是的,您的权利,您的意思是“真的只需添加问号”?我真的需要scape吗?“
使
[01]
成为可选的,可以是
无,也可以是
中的一个。实验,正则表达式真的很简单,一旦你学会了环顾四周,就没有什么可学的了。不错的网站,我经常使用,但它太复杂了。Thanks@Flosculus:“正则表达式真的很简单,一旦你学会了环顾四周,就没有什么可学的了”我不得不恭敬地不同意至少第二部分:)而且,没有必要逃避
确实如此。为什么
:+
?这符合现在的
23:::10
 preg_match("/^(2[0-3]|[01]?[0-9]):[0-5][0-9]$/", $inputToCheck)