ruby正则表达式为HH:MM

时间:2015-10-17 22:54:41

标签: ruby regex

我需要一个只能匹配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'这样的时候应该!

非常感谢任何帮助!

2 个答案:

答案 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