18位身份证号验证
一、了解身份證號18位編碼規(guī)則,排列順序從左至右依次為:
六位數(shù)字地址碼,八位數(shù)字出生日期碼,三位數(shù)字順序碼,一位數(shù)字校驗碼。
詳細:
順序碼的奇數(shù)分給男性,偶數(shù)分給女性。校驗碼是根據(jù)前面十七位數(shù)字碼。前1、2位數(shù)字表示:所在省(直轄市、自治區(qū))的代碼。第3、4位數(shù)字表示:所在地級市(自治州)的代碼。第5、6位數(shù)字表示:所在區(qū)(縣、自治縣、縣級市)的代碼。
順序碼的奇數(shù)分給男性,偶數(shù)分給女性。校驗碼是根據(jù)前面十七位數(shù)字碼。前1、2位數(shù)字表示:所在省(直轄市、自治區(qū))的代碼。第3、4位數(shù)字表示:所在地級市(自治州)的代碼。第5、6位數(shù)字表示:所在區(qū)(縣、自治縣、縣級市)的代碼。
二、驗證碼校驗算法:
算法:對身份證號前17位進行加權(quán)求和,加權(quán)求和總數(shù)對11求余數(shù),然后從表2中找到對應(yīng)的校驗碼,對比校驗碼就可以了。
表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:身份證號從左往右的位數(shù)。
Wi:身份證號對應(yīng)的加權(quán)因子。
Ai:身份證號對應(yīng)的數(shù)值。
?(2)余數(shù) = Sum % 11。
?(3)在下表中根據(jù)余數(shù)找到對應(yīng)的校驗碼。
?表2:
余數(shù) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
校驗碼 | 1 | 0 | X | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
這里用javascript實現(xiàn):
/*** 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;}總結(jié)
- 上一篇: 动物细胞无血清培养基的发展和应用
- 下一篇: Tik Tok直播:如何做好TikTok