如何在JavaScript中进行日期验证?

如何在JavaScript中进行日期验证?,javascript,validation,date,Javascript,Validation,Date,我正在用JavaScript编写生日验证表单,但它不能正常工作。例如,40/40/2012无效,但不会发出任何警报 JavaScript function onFormSubmit(form_element) { var birthday = form_element.birthday.value; if ( !/\d{2}\/\d{2}\/\d{4}/.test(form_element.birthday.value) ) { alert("This

我正在用JavaScript编写生日验证表单,但它不能正常工作。例如,40/40/2012无效,但不会发出任何警报

JavaScript

function onFormSubmit(form_element) {

    var birthday = form_element.birthday.value;
    if ( !/\d{2}\/\d{2}\/\d{4}/.test(form_element.birthday.value) )
    {
        alert("This field is required. Please enter date mm/dd/yyyy!");
        return false;
    }
    return true;
}
HTML


生日:

我喜欢做的是:

var birthday = form_element.birthday.value;
var match = /^(\d\d)\/(\d\d)\/(\d\d\d\d)$/.exec(birthday);
if (!match || match.length < 4) return false;

var d = new Date(match[3] - 0, (match[2] - 0) - 1, match[1] - 0);
if (d.getFullYear() != match[3] || d.getMonth() + 1 != match[2] || d.getDate() != match[1])
  return false;

return true;
var birth=form_element.birth.value;
var match=/^(\d\d)\/(\d\d)\/(\d\d\d)$/.exec(生日);
如果(!match | | match.length<4)返回false;
var d=新日期(匹配[3]-0,(匹配[2]-0)-1,匹配[1]-0);
如果(d.getFullYear()!=匹配[3]| | d.getMonth()+1!=匹配[2]| | d.getDate()!=匹配[1])
返回false;
返回true;
如果从有效的年/月/日创建日期,然后在date对象上检查这些值,则应返回相同的值。如果没有,那么这意味着Date对象调整了伪值以表示有效日期,这意味着伪值是假的


编辑-抱歉,我的代码是为天/月/年编写的;如果您想要月/日/年,请在上面交换
match[2]
match[1]

您可以调整这一点:该正则表达式非常清楚地说明了为什么您没有收到警报。如果你不是自己写的,那就找一个关于正则表达式的好教程。它现在不会给出任何警告。那么把警告放回:-)我只是包括了
true
/
false
返回语句。
var birthday = form_element.birthday.value;
var match = /^(\d\d)\/(\d\d)\/(\d\d\d\d)$/.exec(birthday);
if (!match || match.length < 4) return false;

var d = new Date(match[3] - 0, (match[2] - 0) - 1, match[1] - 0);
if (d.getFullYear() != match[3] || d.getMonth() + 1 != match[2] || d.getDate() != match[1])
  return false;

return true;