1

我目前正在验证表单。当谈到日期时,我遇到了障碍。也许你们中的一些疯狂的 RegEx 家伙可以对这个主题有所了解。我用谷歌搜索,直到我得了关节炎。

目前,我正在使用以下正则表达式:

var dateReg = /^(0[1-9]|1[012])[- //.](0[1-9]|[12][0-9]|3[01])[- //.](19|20)\d\d$/;

这以 mm/dd/yyyy 格式验证,但仅验证 31 天以下的任何内容。是否可以按月进行日验证?是否建议使用此方法另辟蹊径?

4

1 回答 1

1

正如@Wooble 解释的那样,正则表达式将无法满足您的需求。那这个呢:

if(typeof String.prototype.isValidDate === "undefined") {
    String.prototype.isValidDate = function() {
        var data = this.split(/[ -./]/);
        var day = parseInt(data[1]);
        var month = parseInt(data[0]) - 1;
        var year = parseInt(data[2]);
        var date = new Date(year, month, day);
        return date.getDate() === day
            && date.getMonth() === month
            && date.getFullYear() === year;
    }
}

document.write("11 02 2011".isValidDate());​
document.write("<br />");
document.write("11 32 2011".isValidDate());

印刷:

true
false

此处提供演示。

于 2012-10-25T14:33:56.560 回答