返回顶部

收藏

灵活的JavaScript日期验证W/正则表达式

更多
// Validates date inputs
function isDate(dateStr, testYear) {
    var dateObj;
    var dateStamp;
    var day;
    var month;
    var year;
    var dateRegex;

    // Set regex pattern based to test for year or not.
    if(testYear === undefined || testYear == true) {
        testYear = true;
        dateRegex = /^([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})$/.exec(dateStr);
    } else {
        testYear = false;
        dateRegex = /^([0-9]{1,2})\/([0-9]{1,2})$/.exec(dateStr);
    }

    // Validate string.
    if(dateRegex == null) {
        return false;
    }

    // Get day, month, and year if testYear selected (or by default).
    month = parseInt(dateRegex[0]) - 1; // Subtract 1 because JS dates are 0-11.
    day = parseInt(dateRegex[1]);
    if(testYear) {
        year = parseInt(dateRegex[2]);
    } else {
        year = 1999; // This is arbitrary so long as it isn't a leap year.
    }

    // Create dateObj.
    dateStamp = (new Date(year, month, day)).getTime();
    dateObj = new Date();
    dateObj.setTime(dateStamp);

    // Validate date.
    if (dateObj.getMonth() !== month || dateObj.getDate() !== day || dateObj.getYear() !== year) {
        return false;
    }

    return true;
}

标签:javascript

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. K-Res 发表 2018-10-27 12:10:11 关于Javascript中类成员函数中内嵌函数的this闭包问题
  2. 杨魁 发表 2018-10-25 07:28:13 Under the Hood: NaN of JS
  3. 尖兵 发表 2018-10-25 11:03:47 服务重启导致的Java服务抖动CPU占用高
  4. 可乐加糖 发表 2018-10-23 08:31:16 JavaScript文档生成器JSDuck
  5. 可乐加糖 发表 2018-10-23 08:31:16 JavaScript文档生成器JSDuck
  6. wenming.gapo 发表 2018-10-23 11:32:30 AOP装饰函数与小T的情愫(二)
  7. 尖兵 发表 2018-10-18 13:19:02 Java诊断工具Arthas
  8. 尖兵 发表 2018-10-18 13:19:02 Java诊断工具Arthas
  9. hellas 发表 2018-10-18 14:20:31 AOP装饰函数与小T的情愫
  10. 博主 发表 2018-10-15 10:02:38 生成聚合收款二维码:支付宝、微信、QQ 钱包
  11. axiu 发表 2018-10-14 02:30:40 微信小程序开发总结
  12. xirruiqiang 发表 2018-10-14 08:14:43 round 函数在不同语言中的实现乱象

发表评论