身份證號碼的結構:
1,號碼組成:
由十七位數字本體碼和一位校驗碼組成蘸劈。
從左到右:六位數字地址碼昏苏,八位數字出生日期碼,三位數字順序碼威沫,一位數字校驗碼贤惯。
2,地址碼:
表示編碼對象常住戶口所在縣(市棒掠、旗孵构、區(qū))的行政區(qū)劃代碼,按GB/T2260的規(guī)定執(zhí)行烟很。
3颈墅,出生日期碼:
表示編碼對象出生的年、月溯职、日精盅,按GB/T7408的規(guī)定執(zhí)行,年谜酒、月叹俏、日代碼之間不用分隔符。
4僻族,順序碼:
表示在同一地址碼所標識的區(qū)域范圍內粘驰,對同年、同月述么、同日出生的人編定的順序號蝌数,順序碼的奇數分配給男性,偶數分配給女性度秘。
5顶伞,校驗碼:
(1)十七位數字本體碼加權求和公式
S = Sum(Ai * Wi), i = 0, ... , 16 , 先對前17位數字的權求和
Ai:表示第i位置上的身份證號碼數字值
Wi:表示第i位置上的加權因子
7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
(2)計算模
Y = mod(S, 11)
(3)通過模得到對應的校驗碼
Y: 0 1 2 3 4 5 6 7 8 9 10
校驗碼: 1 0 X 9 8 7 6 5 4 3 2
也就是說剑梳,如果得到余數為1則最后的校驗位p應該為對應的0唆貌。
15位的號碼:
a a b b c c y y m m d d x x s
18位的號碼:
a a b b c c y y y y m m d d x x s p
地址碼
(1)第1、2位數字:所在省份編碼垢乙,表示省锨咙、自治區(qū)、直轄市追逮、特別行政區(qū)酪刀。
(2)第3粹舵、4位數字:所在省級市(縣)編碼,表示市骂倘、地區(qū)眼滤、自治州、盟稠茂、直轄市所轄市轄區(qū)柠偶、縣匯總碼、什枪亍(自治區(qū))直轄縣級行政區(qū)劃匯總碼。
(3)第5毡证、6位數字:所在地級縣(市)編碼电爹,表示縣、自治縣料睛、縣級市丐箩、旗、自治旗恤煞、市轄區(qū)屎勘、林區(qū)、特區(qū)居扒。
其他
15位身份證號碼:
第7概漱、8位為出生年份(兩位數,用年份的后兩位表示)喜喂,
第9瓤摧、10位為出生月份,
第11玉吁、12位代表出生日期照弥,
第13、14位為順序碼进副,這個是隨機數这揣,
第15位代表性別,奇數為男影斑,偶數為女给赞。
18位身份證號碼:
第7、8鸥昏、9塞俱、10位為出生年份(四位數),
第11吏垮、12位為出生月份障涯,
第13罐旗、14位代表出生日期,
第15唯蝶、16位為順序碼九秀,
第17位代表性別,奇數為男粘我,偶數為女鼓蜒。
最后一位為校驗位。
簡單版:
JS驗證身份證號:
所以有四種可能性:a.15位數字 b.18位數字 c.17位數字征字,第十八位是'X' d.17位數字都弹,第十八位是'x'
var regIdNo = /(\d{15}$)|(^\d{18}$)|(\d{17}(\d|X|x)$)/;
if(!regIdNo.test(idNo)){
alert('身份證號填寫有誤');
return false;
}
原文鏈接:
js驗證真實姓名與身份證號,手機號的簡單實例:
(https://www.jb51.net/article/88775.htm)
15位和18位身份證JS校驗的簡單實例