一尘不染

如何编写正则表达式来验证日期?

javascript

我正在使用JavaScript,需要弄清楚如何使用正则表达式确定有效日期。

比赛将是:

dd-mm-yyyy
dd-mm-yy

另外,不应接受前导零,例如:

9-8-2010
10-6-99

如何编写正则表达式来做到这一点?


阅读 248

收藏
2020-05-01

共1个答案

一尘不染

我想出了这个:

function isValidDate(inputDate){

    var myRegex = /^(\d{1,2})([\-\/])(\d{1,2})\2(\d{4}|\d{2})$/;
    var match = myRegex.exec(inputDate);

    if (match != null) {
        var auxDay = match[1];
        var auxMonth = match[3] - 1;
        var auxYear = match[4];
        auxYear = auxYear.length < 3 ? (auxYear < 70 ? '20' + auxYear : '19' + auxYear) : auxYear;
        var testingDate = new Date(auxYear,auxMonth,auxDay);
        return ((auxDay == testingDate.getDate()) && (auxMonth == testingDate.getMonth()) && (auxYear == testingDate.getFullYear()));
    } else return false;
}

适用于dd-mm-yyyydd-mm-yyd-m-yyyyd-m-yy,使用-/作为分隔符

2020-05-01