Die Bedeutung jeder 18-stelligen ID-Nummer
1-2-stelliger Provinz-, Autonomieregions- oder Gemeindecode
3-4-stelliger Stadt-, Liga- und autonomer Präfekturcode
5- bis 6-stelliger Kreis-, Stadt- und Bezirkscode auf Kreisebene;
7-14 Ziffern des Geburtsdatums, zum Beispiel 19670401 steht für den 1. April 1967;
Die Ziffern 15–17 sind Folgenummern, davon sind 17 Ziffern ungerade Zahlen für Männer und gerade Zahlen für Frauen
18 Ziffern sind Prüfcodes, 0-9 und X, die durch die Formel
zufällig generiert werden
34 ist die Provinz Anhui
05 ist die Stadt Ma'anshan
23 ist He County
19800101 ist das Geburtsdatum (1. Januar 1980)
001 ist die Sequenznummer (1 ist eine ungerade Zahl und steht für männlich)
3 ist der Bestätigungscode
Peking-Stadt (110000 BJ)
Stadt Tianjin (120000 TJ)
Provinz Hebei (130.000 HE)
Provinz Shanxi (140000 SX)
Autonome Region Innere Mongolei (150.000 Seemeilen)
Provinz Liaoning (210000 LN)
Provinz Jilin (220000 JL)
Provinz Heilongjiang (230000 HL)
Shanghai (310000 SH)
Provinz Jiangsu (320000 JS)
Provinz Zhejiang (330000 ZJ)
Provinz Anhui (340.000 AH)
Provinz Fujian (350000 FJ)
Provinz Jiangxi (360000 JX)
Provinz Shandong (370000 SD)
Provinz Henan (410.000 ha)
Provinz Hubei (420000 HB)
Provinz Hunan (430000 HN)
Provinz Guangdong (440000 GD)
Autonome Region Guangxi Zhuang (450000 GX)
Provinz Hainan (460000 HI)
Chongqing-Stadt (500000 CQ)
Provinz Sichuan (510000 SC)
Provinz Guizhou (520000 GZ)
Provinz Yunnan (530000 YN)
Autonome Region Tibet (540000 XZ)
Provinz Shaanxi (610000 SN)
Provinz Gansu (620000 GS)
Provinz Qinghai (630000 QH)
Autonome Region Ningxia Hui (640000 NX)
Uigurisches Autonomes Gebiet Xinjiang (650000 XJ)
Provinz Taiwan (710000 Tw)
Sonderverwaltungszone Hongkong (810000 HK)
Sonderverwaltungszone Macau (820.000 Mo)
Multiplizieren Sie die ersten 17 Ziffern der ID-Nummer mit verschiedenen Koeffizienten;
Die Koeffizienten von der ersten bis zur siebzehnten Position sind: 7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2
Addieren Sie die Ergebnisse der Multiplikation dieser 17-stelligen Zahlen und Koeffizienten;
Teilen Sie die Summe durch 11, um den Rest zu ermitteln
Der Rest kann nur 11 Zahlen sein: 0-1-2-3-4-5-6-7-8-9-10;
Die entsprechende letzte ID-Nummer ist 1-0-X-9-8-7-6-5-4-3-2
Aus dem oben Gesagten wissen wir, dass bei einem Rest von 2 die römische Zahl X an der 18. Stelle des Personalausweises erscheint. Beträgt der Rest 10, ist die letzte Zahl auf dem Personalausweis die 2.
Beispiel:
Die ID-Nummer eines bestimmten Mannes lautet 340523198001010013. Wir müssen prüfen, ob es sich bei diesem Personalausweis um einen legalen Personalausweis handelt.
Zuerst erhalten wir die Summe der Produkte der ersten 17 Ziffern:
(3*7 4*9 0*10 5*5 2*8 3*4 1*2 9*1 8*6 0*3 0*7 1*9 0*10 1*5 0*8 0*4 1 *2) = 185
Dann fragen Sie nach dem Rest:
185 % 11 = 9
JavaScript zur Überprüfung des 18-stelligen Personalausweises
Überprüfen Sie dann, ob die ersten beiden Ziffern gesetzliche Provinzen (Gemeinden/autonome Regionen) sind:
if(!/^\d{17}(\d|x)$/i.test(ID)) return false; // \d 匹配数字 // ^ 匹配开始 // $ 匹配结尾 // i 不区分大小写 // {17} 匹配17次 // \d|x 匹配数字或x
// Die Methode stringObject.substr(start,length) kann die angegebene Anzahl von Zeichen beginnend mit dem Startindex in der Zeichenfolge
extrahieren // Zusätzlich zur Punktsyntax (.) können Sie beim Zugriff auf Objekteigenschaften auch eckige Klammern ([]) verwenden. Die Verwendung von eckigen Klammern ist flexiblerif(city[ID.substr(0,2)] === undefined) return "非法地区";
Stellen Sie abschließend fest, ob der Prüfcode korrekt ist:
var birthday = ID.substr(6, 4) + '/' + Number(ID.substr(10, 2)) + '/' + Number(ID.substr(12, 2)); var d = new Date(birthday); var newBirthday = d.getFullYear() + '/' + Number(d.getMonth() + 1) + '/' + Number(d.getDate()); var currentTime = new Date().getTime(); var time = d.getTime(); if(time >= currentTime || birthday !== newBirthday) return '非法生日'; // 获取身份证的年月日,然后再 new 一个 Date,再对比这两个日期是否一致 // 这里用Number()主要是因为身份证的日期是带0的,而new Date()出来的日期是不带0的,Number()之后就都不带0了
Wenn die oben genannte Überprüfung bestanden wird, handelt es sich um eine gültige ID-Nummer
var arrInt = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; var arrCh = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']; var sum = 0, i, residue; for(i=0; i<17; i++) { sum += ID.substr(i, 1) * arrInt[i]; } residue = arrCh[sum % 11]; if (residue !== ID.substr(17, 1)) '非法证号';