身份證驗證JS版(轉載)

來源:互聯網
上載者:User

標籤:style   blog   http   color   io   os   ar   使用   java   

/***代碼參考來自:http://www.oschina.net/code/snippet_778481_21907*只驗證身份證是否正確,未加上判斷性別*@param num 社會安全號碼碼*@return boolean true|false*使用,var bools = checkIdentity.validate(num);*/var checkIdentity = {    validate:function(num)    {        var areaNum = dateNum = sexNum = endNum = 0;        if(num == "" || num== null || num == undefined)        {            return false;        }        // 不是15位或不是18位都是無效社會安全號碼        if(num.length != 15 && num.length != 18){            return false;        }        // 是數值        if(!isNaN(num)){            // 如果是15位社會安全號碼            if(num.length == 15 ){                // 省市縣(3位)                areaNum = num.substring(0,3);                // 出生年月(6位)                dateNum = num.substring(6,12);                // 性別(3位)                sexNum = num.substring(12,15);            }else{            // 如果是18位社會安全號碼                // 省市縣(6位)                areaNum = num.substring(0,6);                // 出生年月(8位)                dateNum = num.substring(6,14);                // 性別(3位)                sexNum = num.substring(14,17);                // 校正碼(1位)                endNum = num.substring(17,18);            }        }else{        // 不是數值                    if(num.length == 15){                return false;            }else{                // 驗證前17位為數值,且18位為字元x                var check17 = num.substring(0,17);                if(isNaN(check17)){                    return false;                }                // 省市縣(6位)                areaNum = num.substring(0,6);                // 出生年月(8位)                dateNum = num.substring(6,14);                // 性別(3位)                sexNum = num.substring(14,17);                // 校正碼(1位)                endNum = num.substring(17,18);                if(endNum != ‘x‘ && endNum != ‘X‘){                    return false;                }            }        }        if(areaNum != 0){            if(!this._checkArea(areaNum)){                return false;            }        }        if(dateNum != 0){            if(!this._checkDate(dateNum)){                return false;            }        }        if(endNum != 0){            if(!this._checkEnd(endNum,num)){                return false;            }        }                return true;                    },    _checkArea:function(area)    {        var num1 = area.substring(0,2);        // var num2 = area.substring(2,2);        // var num3 = area.substring(4,2);        // 根據GB/T2260—999,省市代碼11到65        if(10 < num1 && num1 < 66){            return true;        }else{            return false;        }        //============        // 對市 區進行驗證        //============    },    _checkDate:function(date)    {        var statusY = date1 = date2 = date3="";         if(date.length == 6){            date1 = date.substring(0,2);            date2 = date.substring(2,4);            date3 = date.substring(4,6);            statusY = this._checkY(‘19‘+date1);        }else{            var nowDate = new Date();            date1 = date.substring(0,4);            date2 = date.substring(4,6);            date3 = date.substring(6,8);            var nowY  = nowDate.getFullYear();            if(1900 < date1 && date1 <= nowY){                statusY = this._checkY(date1);            }else{                return false;            }        }        if(0 < date2 && date2 <13){            if(date2 == 2){                // 潤年                if(statusY){                    if(0 < date3 && date3 <= 29){                        return true;                    }else{                        return false;                    }                }else{                // 平年                    if(0 < date3 && date3 <= 28){                        return true;                    }else{                        return false;                    }                }            }else{                var maxDateNum = this._getDateNum(statusY,date2);                if(0 < date3 && date3 <= maxDateNum){                    return true;                }else{                    return false;                }            }        }else{            return false;        }    },    _checkY:function(Y){        // 驗證平年潤年,參數年份,返回 true為潤年  false為平年        if(typeof Y == ‘string‘){            Y = parseInt(Y);        }        if(Y % 100 == 0){            if(Y % 400 == 0){                return true;            }else{                return false;            }        }else if(Y % 4 ==  0){            return true;        }else{            return false;        }    },    _getDateNum:function($year,$month)    {        var days = new Date($year,$month,0).getDate();        return days;    },    _checkEnd:function(end,num){        var checkHou = new Array(1,0,‘x‘,9,8,7,6,5,4,3,2);        var checkGu = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);        var sum = 0;        var numArr = new Array();        for(var j = 0;j < num.length;j++)        {            var tmpJ = j+1;            numArr[j] = num.substring(j,tmpJ);        }            for(var i = 0;i < 17;i++){            sum += parseInt(checkGu[i]) * parseInt(numArr[i]);        }        var checkHouParameter= sum % 11;        if(checkHou[checkHouParameter] != num.substring(17,18)){            return false;        }else{            return true;        }    }}

這是自己將PHP代碼轉成Javascript,由於時間比較趕,未進行很多測試,如發現不對的地方,還請你能指出,告訴我,非常感謝.

我的聯絡郵箱是:[email protected]

身份證驗證JS版(轉載)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.