身份證號(hào)碼的結(jié)構(gòu):
1,號(hào)碼組成:
由十七位數(shù)字本體碼和一位校驗(yàn)碼組成。
從左到右:六位數(shù)字地址碼,八位數(shù)字出生日期碼,三位數(shù)字順序碼,一位數(shù)字校驗(yàn)碼。
2,地址碼:
表示編碼對(duì)象常住戶口所在縣(市、旗、區(qū))的行政區(qū)劃代碼,按GB/T2260的規(guī)定執(zhí)行。
3,出生日期碼:
表示編碼對(duì)象出生的年、月、日,按GB/T7408的規(guī)定執(zhí)行,年、月、日代碼之間不用分隔符。
4,順序碼:
表示在同一地址碼所標(biāo)識(shí)的區(qū)域范圍內(nèi),對(duì)同年、同月、同日出生的人編定的順序號(hào),順序碼的奇數(shù)分配給男性,偶數(shù)分配給女性。
5,校驗(yàn)碼:
(1)十七位數(shù)字本體碼加權(quán)求和公式
S = Sum(Ai * Wi), i = 0, ... , 16 , 先對(duì)前17位數(shù)字的權(quán)求和
Ai:表示第i位置上的身份證號(hào)碼數(shù)字值
Wi:表示第i位置上的加權(quán)因子
7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
(2)計(jì)算模
Y = mod(S, 11)
(3)通過模得到對(duì)應(yīng)的校驗(yàn)碼
Y: 0 1 2 3 4 5 6 7 8 9 10
校驗(yàn)碼: 1 0 X 9 8 7 6 5 4 3 2
也就是說,如果得到余數(shù)為1則最后的校驗(yàn)位p應(yīng)該為對(duì)應(yīng)的0。
15位的號(hào)碼:
a a b b c c y y m m d d x x s
18位的號(hào)碼:
a a b b c c y y y y m m d d x x s p
地址碼
(1)第1、2位數(shù)字:所在省份編碼,表示省、自治區(qū)、直轄市、特別行政區(qū)。
(2)第3、4位數(shù)字:所在省級(jí)市(縣)編碼,表示市、地區(qū)、自治州、盟、直轄市所轄市轄區(qū)、縣匯總碼、?。ㄗ灾螀^(qū))直轄縣級(jí)行政區(qū)劃匯總碼。
(3)第5、6位數(shù)字:所在地級(jí)縣(市)編碼,表示縣、自治縣、縣級(jí)市、旗、自治旗、市轄區(qū)、林區(qū)、特區(qū)。
其他
15位身份證號(hào)碼:
第7、8位為出生年份(兩位數(shù),用年份的后兩位表示),
第9、10位為出生月份,
第11、12位代表出生日期,
第13、14位為順序碼,這個(gè)是隨機(jī)數(shù),
第15位代表性別,奇數(shù)為男,偶數(shù)為女。
18位身份證號(hào)碼:
第7、8、9、10位為出生年份(四位數(shù)),
第11、12位為出生月份,
第13、14位代表出生日期,
第15、16位為順序碼,
第17位代表性別,奇數(shù)為男,偶數(shù)為女。
最后一位為校驗(yàn)位。
簡單版:
JS驗(yàn)證身份證號(hào):
所以有四種可能性:a.15位數(shù)字 b.18位數(shù)字 c.17位數(shù)字,第十八位是'X' d.17位數(shù)字,第十八位是'x'
var regIdNo = /(\d{15}$)|(^\d{18}$)|(\d{17}(\d|X|x)$)/;
if(!regIdNo.test(idNo)){
alert('身份證號(hào)填寫有誤');
return false;
}
原文鏈接:
js驗(yàn)證真實(shí)姓名與身份證號(hào),手機(jī)號(hào)的簡單實(shí)例:
(https://www.jb51.net/article/88775.htm)
15位和18位身份證JS校驗(yàn)的簡單實(shí)例