身份证第18位校验码如何计算

身份证第18位校验码计算规则:

下面代码是javascript的实现;

校验为真返回true;否则返回false

function check(id){
        var vid = id+'';
        var flag = false;
        console.log(id)
        if(vid.length != 18){
            return flag;
        };
        var rule = '10X98765432';
        var lastStr = vid.slice(17);
        var str = id.slice(0, 17);
        var arr = str.split('').reverse();
        var s = 0;
        arr.forEach(function(val, i) {
             s+=Math.pow(2, ++i)%11*val;
        }, this);
        flag = rule[s%11] == lastStr.toUpperCase();
        return flag;
}

 

posted @ 2017-08-28 20:51  _zhiqiu  阅读(844)  评论(0编辑  收藏  举报