javascript 日期验证未验证 2 月 31 日

标签 javascript validation

我正在尝试编写一些代码来验证表单数据。我有一个日期字段,它应该具有 mm/dd/yyyy 格式。我需要捕获诸如 February 31 之类的异常,因此我添加了以下代码:

var d = new Date(dob);
if (isNaN(d.getTime())) { //this if is to take care of February 31, BUT IT DOESN'T!
  error = 1;
  message += "<li>Invalid Date</li>";
} else {
  var date_regex = /^(0[1-9]|1[0-2])\/(0[1-9]|1\d|2\d|3[01])\/(19|20)\d{2}$/;
  var validFormat = date_regex.test(dob);
  if (!(validFormat)) {
    error = 1;
    message += "<li>Invalid date format - date must have format mm/dd/yyyy</li>";
  }
}

但是我发现了一些非常奇怪的事情:虽然日期 02/32/2000 错误为无效日期,但 02/31/2000 却不是!

最佳答案

由于我在评论中所说的...

检查日期是否有效的另一种方法是检查传递给 new Date 函数的内容是否与输出的内容相同,如下所示:

// Remember that the month is 0-based so February is actually 1...
function isValidDate(year, month, day) {
    var d = new Date(year, month, day);
    if (d.getFullYear() == year && d.getMonth() == month && d.getDate() == day) {
        return true;
    }
    return false;
}

那么你可以这样做:

if (isValidDate(2013,1,31))

如果有效则返回 true,如果无效则返回 false

关于javascript 日期验证未验证 2 月 31 日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21188420/

相关文章:

node.js - Express 验证器 - 如何允许可选字段

jquery - 当从 DOM 中删除违规元素时,无效表单不会重新计算其有效性

javascript - innerHTML 会影响性能吗?

javascript - 在我的 Google 搜索 API 调用中,它返回一个有效的 JSON,但每当我解析它以获取特定值时,我都会得到 Undefined

javascript - 如何使用正则表达式匹配逗号后的任何数字?

java - 当表单操作使用 Apache Shiro 转到 jsp 页面时,onClick 不起作用

javascript - 在浏览器检查表单之前运行 javascript onsubmit

字符串的Python多重比较

validation - AngularJS 表单验证在 Chrome 中不起作用

javascript - 将参数从 HOC 功能组件传递到组件不起作用