根据出生日期计算出周岁跟月数以及年月日的正则校验

在这里插入图片描述


```java

```javascript
//=====.出生日期 失去焦点触发======
$("input[name='birthday']").blur(function () {
    
    
    var birthday = $(this).val();//获取到出生日期的文本值
    //正则 规范的日期校验
    var reg=  /^((?!0000)[0-9]{4}-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)|([0-9]{2}(0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29)$/;
    //用test进行校验
    if(reg.test(birthday)){
    
    
        //调用算年龄的方法countAge 传入我们的值birthday 并且用str变量接收
        var str = countAge(birthday);
        $("input[name='age']").val(str[0]);//绑定在岁文本框上
        $("input[name='month']").val(str[1]);//绑定在月文本框上
    }else {
    
    //如果不符合提示并且清空相关文本框内容
        layer.alert("请输入正确的日期格式", {
    
    icon: 0, title: '提示', anim: 6})
        $("input[name='birthday']").val("");
        $("input[name='age']").val("");
        $("input[name='month']").val("");
    }
});
//==根据日期算年龄跟月的方法==
function countAge(birthday){
    
    
    if(birthday){
    
    
        //split根据指定字符进行分割返回一个数组
        birthday=birthday.split('-');
        // 新建日期对象
        let date = new Date();
        // 今天日期,数组,同 birthday
        let today = [date.getFullYear(), date.getMonth() + 1, date.getDate()];
        // 分别计算年月日差值
        let age = today.map((val, index) => {
    
    
            return val - birthday[index]
        })
        // 当天数为负数时,月减 1,天数加上月总天数
        if (age[2] < 0) {
    
    
            // 简单获取上个月总天数的方法,不会错
            let lastMonth = new Date(today[0], today[1], 0)
            age[1]--
            age[2] += lastMonth.getDate()
        }
        // 当月数为负数时,年减 1,月数加上 12
        if (age[1] < 0) {
    
    
            age[0]--
            age[1] += 12
        }
        console.log(age[0]+'岁'+age[1]+'月'+age[2]+'天');
        return [age[0],age[1]];//拿到我们需要的岁跟月 至于天 大家需要可以自行获取
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_47336389/article/details/122093567