验证身份证 以及获取年龄性别

/**
 * 
 * @param idCard
 * @returns
 */
function checkId(idCard) {
    // 检查身份证号码
    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 ];
    var Checker = [ 1, 9, 8, 7, 6, 5, 4, 3, 2, 1, 1 ];
    if (idCard.length != 15 && idCard.length != 18)
        return "身份证号共有15位或18位";
    var Ai = idCard.length == 18 ? idCard.substring(0, 17) : idCard.slice(0, 6) + "19" + idCard.slice(6, 16);
    if (!/^\d+$/.test(Ai))
        return "身份证除最后一位外,必须为数字!";
    var yyyy = Ai.slice(6, 10), mm = Ai.slice(10, 12) - 1, dd = Ai.slice(12, 14);
    var d = new Date(yyyy, mm, dd), now = new Date();
    var year = d.getFullYear(), mon = d.getMonth(), day = d.getDate();
    if (year != yyyy || mon != mm || day != dd || d > now || year < 1800)
        return "身份证输入错误!";
    for (var i = 0, ret = 0; i < 17; i++)
        ret += Ai.charAt(i) * Wi[i];
    Ai += arrVerifyCode[ret %= 11];
    return idCard.length == 18 && idCard != Ai ? false : true;
};
/**
 * 根据身份证获取性别
 * 
 * @param idCard
 * @returns
 */
function getSex(idCard) {
    var gender = idCard.slice(14, 17) % 2 ? "MALE" : "FEMALE";
    return gender;
};

/**
 * 根据身份证获取姓年龄
 * 
 * @param idCard
 * @returns
 */
function getAge(idCard) {
    var myDate = new Date();
    var month = myDate.getMonth() + 1;
    var day = myDate.getDate();
    var age = myDate.getFullYear() - idCard.substring(6, 10) - 1;
    if (idCard.substring(10, 12) < month || idCard.substring(10, 12) == month && idCard.substring(12, 14) <= day) {
        age++;
    }
    return age;
};
/**
 * 根据身份证获取姓生日
 * 
 * @param idCard
 * @returns
 */
function getBirthDay(idCard) {
    var ic = String(idCard);
    // 获取出生日期
    var birthDay = idCard.substring(6, 10) + "-" + idCard.substring(10, 12) + "-" + idCard.substring(12, 14);
    return birthDay;
};

 

转载于:https://my.oschina.net/u/586392/blog/1553396

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值