出生日期regex yyyy-mm-dd for rails app

时间:2011-05-19 21:23:26

标签: ruby regex date format validation

我正在创建一个用户注册表单,我正在将日期添加到必填字段。

我已经搜索了google,github和stackoverflow以获得一个好的出生日期(日期)正则表达式,并发现了这个:

user.rb

DateRegex = /^\d{4}-\d{2}-\d{2}/

validates_format_of :date_of_birth, :with => DateRegex

new.html.erb

<%=label_tag :date_of_birth %>
<%=f.text_field :date_of_birth %> 

(我知道这会允许一些虚假的出生日期,但我不想在此时安装任何类似验证及时性的内容。)

然而,在测试出生日期时,它似乎并没有强制执行正则表达式中的4-2-2。它允许2-2-2有时,2-4-2,2-2-4,它允许连字符和斜线...请帮助吗?

另外,如果有必要,我如何使用3个文本字段并让它进入一个mysql date_of_birth列?

2 个答案:

答案 0 :(得分:5)

您可以随时使用Date.parse让您的生活更轻松。如果可以解析它,它可能是一个有效的日期:

validates_each :date_of_birth do |record, attr, value|
  begin
    Date.parse(value)
  rescue
    record.errors.add(attr, "Invalid date")
  end
end

这有利于拒绝像99-99-99和2月30日这样的事情。

答案 1 :(得分:0)

我希望这会有所帮助。

validates :date_of_birth, format: { with: /^\d{4}-\d{2}-\d{2}$/, multiline: true }