【发布时间】:2015-07-13 08:43:31
【问题描述】:
我想确保用户的唯一输入是 8 个数字(输入默认为整数)。
我的目标是确保用户输入的日期格式为:yyyymmdd。
如果他不输入这种格式,我想使用循环再次输入,直到他输入正确的格式(yyyymmdd)。
我当前的循环不会验证日期,它会传递每个输入。
txt=gets
re1='((?:(?:[1]{1}\\d{1}\\d{1}\\d{1})|(?:[2]{1}\\d{3}))(?:[0]?[1-9]|[1][012])(?:(?:[0-2]?\\d{1})|(?:[3][01]{1})))(?![\\d])' # YYYYMMDD 1
re=(re1)
m=Regexp.new(re,Regexp::IGNORECASE);
while m.match(txt)
txt=gets
end
【问题讨论】:
-
不需要正则表达式验证(复杂而缓慢),只需尝试解析日期,如果抛出异常,捕获它,显示错误消息并要求用户重新输入日期(在循环中执行,仅在输入有效日期时才中断)
标签: ruby regex validation date