如何在 JavaScript 中进行日期验证

How to do date validation in JavaScript?

本文关键字:日期 验证 JavaScript      更新时间:2023-09-26

我正在使用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

<form onsubmit="return onFormSubmit(this)">
    Birthday:<input type="text" name="birthday" /><br />
    <input type="submit" value="submit" />
</form>

我喜欢做的是:

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;

如果从有效的年/月/日创建日期,然后在 Date 对象上检查这些值,则应返回相同的值。如果不这样做,则意味着 Date 对象调整了虚假值以表示有效日期,这意味着虚假值是虚假的。

编辑 — 对不起,我的代码是为日/月/年编写的;如果你想要月/日/年,交换match[2]并在上面match[1]