js 身份证验证

//工具集合
var tool_ = {
    now: function () {
        var day;
        var mydate = new Date();
        var txt = mydate.getFullYear() + '-' + mydate.getMonth() + '-' + mydate.getDate();
        var arr = txt.split('-');
        if (arr.length == 3) {
            day = new Date(arr[0], (arr[1] - 1), arr[2]);
        } else {
            day = new Date();
        }
        return day;
    },
birthday: function (val) {
        var txt = val.slice(6, 10) + '-' + val.slice(10, 12) + '-' + val.slice(12, 14);
        return txt;
    },
    checkId: function (val) {
        if (!val) {
            return false;
        } else {
            val = val.replace(/(^\s*)|(\s*$)/g, '');
        }
        var arrVerifyCode = [1, 0, "x", 9, 8, 7, 6, 5, 4, 3, 2];
        var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
        if (val.length != 15 && val.length != 18) {
            return false;
        }
        var Ai = val.length == 18 ? val.substring(0, 17) : val.slice(0, 6) + "19" + val.slice(6, 16);
        if (!/^\d+$/.test(Ai))
            return false;
        var yyyy = Ai.slice(6, 10), mm = Ai.slice(10, 12) - 1, dd = Ai
            .slice(12, 14);
        var d = new Date(yyyy, mm, dd), year = d.getFullYear(), mon = d
            .getMonth(), day = d.getDate(), now = tool_.now();
        if (year != yyyy || mon != mm || day != dd || d > now
            || now.getFullYear() - year > 140)
            return false;
        for (var i = 0, ret = 0; i < 17; i++)
            ret += Ai.charAt(i) * Wi[i];
            Ai += arrVerifyCode[ret %= 11];
        return val.length == 18 && val.toLowerCase() != Ai ? false : Ai;
    },
    gender: function(val){
        var rst;
        if (val.slice(14, 17) % 2 != 0)
            rst = "男";
        else
            rst = "女";
        return rst;
    }
};
//调用
tool_.checkId("321***19941227****")  返回值:true/false
tool_.gender("321***19941227****")   返回值:男/女
tool_.birthday("321***19941227****")   返回值:1994-12-27

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值