js 身份证验证

来源:互联网 发布:网络下载限速怎么设置 编辑:程序博客网 时间:2024/05/18 01:17
//工具集合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/falsetool_.gender("321***19941227****")   返回值:男/女tool_.birthday("321***19941227****")   返回值:1994-12-27

原创粉丝点击