用于匹配HH:MM或HH或H时间格式的正则表达式

时间:2015-04-10 10:28:47

标签: regex

我有php web应用程序并使用preg_match解析了几次字符串。

问题是我的用户可能会按以下格式输入时间:

  • "从8:30到17:00"
  • " 8到18"
  • " 09:00至14:30"

所以基本上我想从字符串中得到两次,这两次中的每一次都可以用H,HH或HH:MM给出。

只有HH:MM有一个stackoverflow线程,但是(Regular expression for matching HH:MM time format)但我的问题没有。

2 个答案:

答案 0 :(得分:0)

快速回答(可能整理): (\d\d?(?::\d\d)?)\s+to\s+(\d\d?(?::\d\d)?)

请参阅RegEx101

此致

答案 1 :(得分:0)

如果没有任何控制权,您可以稍后验证时间:

^\D*(\d\d?(?::\d\d)?)\D+(\d\d?(?::\d\d)?)\D*$

当然,您可以测试小时是0到23之间,还是0到59之间的分钟:

^\D*((?:2[0-3]|[01]?[0-9])(?::[0-5][0-9])?)\D+((?:2[0-3]|[01]?[0-9])(?::[0-5][0-9])?))\D*$