18位身份证号验证
一、了解身份證號18位編碼規則,排列順序從左至右依次為:
六位數字地址碼,八位數字出生日期碼,三位數字順序碼,一位數字校驗碼。
詳細:
順序碼的奇數分給男性,偶數分給女性。校驗碼是根據前面十七位數字碼。前1、2位數字表示:所在省(直轄市、自治區)的代碼。第3、4位數字表示:所在地級市(自治州)的代碼。第5、6位數字表示:所在區(縣、自治縣、縣級市)的代碼。
順序碼的奇數分給男性,偶數分給女性。校驗碼是根據前面十七位數字碼。前1、2位數字表示:所在省(直轄市、自治區)的代碼。第3、4位數字表示:所在地級市(自治州)的代碼。第5、6位數字表示:所在區(縣、自治縣、縣級市)的代碼。
二、驗證碼校驗算法:
算法:對身份證號前17位進行加權求和,加權求和總數對11求余數,然后從表2中找到對應的校驗碼,對比校驗碼就可以了。
表1:
i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
Wi | 7 | 9 | 10 | 5 | 8 | 4 | 2 | 1 | 6 | 3 | 7 | 9 | 10 | 5 | 8 | 4 | 2 |
i:身份證號從左往右的位數。
Wi:身份證號對應的加權因子。
Ai:身份證號對應的數值。
?(2)余數 = Sum % 11。
?(3)在下表中根據余數找到對應的校驗碼。
?表2:
余數 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
校驗碼 | 1 | 0 | X | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
這里用javascript實現:
/*** 18位身份證號碼校驗*/ function isIdCard(idcard){if(!idcard){return false;}if(idcard.length<18){return false;}let len = 17;let sum = 0;let yzArray = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];let codeArray = ['1','0','X','9','8','7','6','5','4','3','2'];for(let i=0;i<len;i++){sum+=idcard[i]*yzArray[i];}let mod = sum%11;if( codeArray[mod]==idcard[17] ){return true;}return false;}總結
- 上一篇: 动物细胞无血清培养基的发展和应用
- 下一篇: Tik Tok直播:如何做好TikTok