我目前正在验证表单。当谈到日期时,我遇到了障碍。也许你们中的一些疯狂的 RegEx 家伙可以对这个主题有所了解。我用谷歌搜索,直到我得了关节炎。
目前,我正在使用以下正则表达式:
var dateReg = /^(0[1-9]|1[012])[- //.](0[1-9]|[12][0-9]|3[01])[- //.](19|20)\d\d$/;
这以 mm/dd/yyyy 格式验证,但仅验证 31 天以下的任何内容。是否可以按月进行日验证?是否建议使用此方法另辟蹊径?
正如@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
此处提供演示。