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

Sta*_*vrl 4 ruby regex format validation date

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

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

user.rb

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

validates_format_of :date_of_birth, :with => DateRegex
Run Code Online (Sandbox Code Playgroud)

new.html.erb

<%=label_tag :date_of_birth %>
<%=f.text_field :date_of_birth %> 
Run Code Online (Sandbox Code Playgroud)

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

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

此外,如果有必要,如何使用3个文本字段并将其输入一个mysql date_of_birth列?

tad*_*man 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
Run Code Online (Sandbox Code Playgroud)

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