Javascript正则表达式匹配一个时间格式的字符串

Javascript 2019-12-07 阅读 51 评论 0

本示例结合正则表达式,以及Date对象的 getMonthgetDate 方法,简单地验证时间的字符串。仅匹配格式如:2016-02-29 23:02:03,不匹配 2016/02/29 23:02:03

注意的是:

  • getMonth 为基于0的值(0表示一年中的第一月)
  • 获取某个月份的最后一天:
var lastDay = new Date(year, month, 0).getDate();


匹配方法如下

function validateDateTime(testdate) {
    var date_regex = /((19|20)[0-9]{2})-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01]) ([01]?[0-9]|2[0-3]):[0-5]?[0-9]:[0-5]?[0-9]/;
    var res = date_regex.test(testdate);
    if(res) {
        var ymd = testdate.match(/(\d{4})-(\d+)-(\d+).*/);
        var year = parseInt(ymd[1]);
        var month = parseInt(ymd[2]);
        var day = parseInt(ymd[3]);
        if(day > 28) {
            //获取当月的最后一天
            var lastDay = new Date(year, month, 0).getDate();
            return (lastDay >= day);
        }
        return true;
    }
    return false;
}

调用示例

var format = "2016-02-29 23:2:3";
validateDateTime(format);
// true

亲自试一试:Demo

最后更新 2019-12-08