我需要一个只能匹配HH:MM格式时间的正则表达式,但不需要给出没有HH的时间,例如:'4:00'。它应该接受01:00,23:59,00:45等时间,但不能接受4:00,29:00等时间。我发现接受HH的正则表达式:MM和H:MM但我需要一个匹配HH:仅限MM。
基本上,像'4:00'这样的时间不应该匹配,像'04:00'这样的时候应该!
非常感谢任何帮助!
答案 0 :(得分:2)
稍微修改@james jelo4kul的答案,我认为以下是正确的正则表达式,以满足您的要求:
([0-1][0-9]|[2][0-3]):[0-5][0-9]
答案 1 :(得分:0)
您不必使用正则表达式:
require 'time'
def get_time(str)
b = str.each_char.each_cons(5).find { |a| ['0', '1', '2'].include?(a.first) &&
(DateTime.strptime(a.join, '%H:%M') rescue nil) }
b ? b.join : b
end
get_time "It's 6:07!" #=> nil
get_time "It's 06:07!" #=> "06:07"
get_time "It's 23:07!" #=> "23:07"
get_time "It's 23:77!" #=> nil