function validateDate(date) {
var regex = /^(\d{4})([01]\d|2[0-3])([0-3]\d)$/; // 定义日期格式的正则表达式
if (regex.test(date)) {
var year = parseInt(RegExp.$1); // 提取年份部分并转换为数字类型
// 判断是否为闰年
function isLeapYear(year) {
return ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0);
}
// 根据月份获取对应的天数
function getDaysInMonth(month, leapYearFlag) {
switch (month) {
case '01':
return 31;
case '02':
return leapYearFlag ? 29 : 28;
case '03':
return 31;
case '04':
return 30;
case '05':
return 31;
case '06':
return 30;
case '07':
return 31;
case '08':
return 31;
case '09':
return 30;
case '10':
return 31;
case '11':
return 30;
default:
return 31;
}
}
var month = RegExp.$2; // 提取月份部分
var day = RegExp.$3; // 提取日期部分
var daysInMonth = getDaysInMonth(month, isLeapYear(year)); // 获取当前月份的天数
if (parseInt(day) <= daysInMonth) {
console.log("输入的日期有效");
} else {
console.log("输入的日期无效");
}
} else {
console.log("输入的日期格式不符合要求");
}
}
// 测试样例
validateDate('20200229'); // 输入的日期有效
validateDate('20200230'); // 输入的日期无效(2月没有30号)
validateDate('20201301'); // 输入的日期格式不符合要求(月份超过了12)
10-16
3755

04-11
5835
