js正则表达式完整验证yyyyMMdd平闰年日期有效性

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)

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听风看月_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值