将Ruby DateTime格式转换为regexp

时间:2012-03-09 22:50:47

标签: ruby regex validation datetime

我想将"%m/%d/%y %H:%M"之类的日期时间格式字符串转换为正则表达式。我不知道格式字符串是什么,我不必处理每一个案例,所以我一直试图将gsub写入字符串。

DATEFORMAT = "%m/%d/%y %H:%M"

def date_format_to_regex
  format = DATEFORMAT
  format = format.gsub(/\//,'\/')
  format = format.gsub(/%[ymdCHI]/,'[[:digit:]]{2}') #two digits
  format = format.gsub(/%[YMS]/,'[[:digit:]]{4}')    #four digits
  @date_regex = Regexp.new(format)
end

但是它的输出搞砸了许多斜杠

"%m/%d/%y %H:%M == (?-mix:[[:digit:]]{2}\\/[[:digit:]]{2}\\/[[:digit:]]{2} [[:digit:]]{2}:[[:digit:]]{4})"

1 个答案:

答案 0 :(得分:1)

DATEFORMAT = "%m/%d/%y %H:%M"

def date_format_to_regex    
  format = DATEFORMAT.gsub(/%[ymdCHI]/, "\\d{2}").gsub(/%[YMS]/, "\\d{4}")
  @date_regex = Regexp.new(format)
end