【发布时间】:2012-03-27 09:00:42
【问题描述】:
我想将"%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})"
【问题讨论】:
-
我不是 Ruby 专家,但我认为您不想在第一次 gsub 调用中逃避您的替换
/。在左边逃走,而不是在右边。 -
'\/'与"\\/"相同 - 如果/不在/regex string literal/内部,则不需要转义=> 尝试删除format = format.gsub(/\//,'\/')... -
是的,第一个 gsub 似乎实际上并没有做任何事情......你最终想要得到什么?
标签: ruby regex validation datetime