Hören Sie auf, Unsinn zu reden, und gehen Sie direkt zum Code. Die Analyse ist in den Kommentaren sehr klar, daher wird es hier kein BB geben.
/*
Gemäß den Bestimmungen zu Bürgeridentitätsnummern im Nationalen Standard der Volksrepublik China GB 11643-1999 ist die Bürgeridentitätsnummer ein charakteristischer Kombinationscode, der aus einem siebzehnstelligen Körpercode und einem einstelligen Prüfcode besteht. Die Reihenfolge von links nach rechts ist: sechsstelliger Adresscode, achtstelliger Geburtsdatumscode, dreistelliger Sequenzcode und einstelliger Prüfcode.
Der Adresscode stellt den Verwaltungsbezirkscode des Landkreises (Stadt, Banner, Bezirk) dar, in dem sich der ständige Wohnsitz des Kodierungsobjekts befindet.
Der Geburtsdatumscode stellt das Jahr, den Monat und den Tag dar, an dem das Codierungsobjekt geboren wurde, wobei das Jahr durch vier Ziffern dargestellt wird und kein Trennzeichen zwischen Jahr, Monat und Tag verwendet wird.
Der Sequenzcode gibt die Sequenznummer an, die Personen zugewiesen wird, die im selben Jahr, Monat und Tag in dem durch denselben Adresscode identifizierten Gebiet geboren wurden. Ungerade Zahlen im Sequenzcode werden Männern zugewiesen, gerade Zahlen werden Frauen zugewiesen.
Der Prüfcode ist ein Prüfcode, der auf der Grundlage der vorherigen siebzehn Ziffern und gemäß dem Prüfcode ISO 7064:1983.MOD 11-2 berechnet wird.
So berechnen Sie das Geburtsdatum.
Der Zifferncode des Personalausweises erweitert zunächst das Geburtsjahr auf 4 Ziffern, sodass alle zwischen 1800 und 1999 geborenen Personen enthalten sind;
Diejenigen, die nach 1800 geboren wurden, müssen in der 18. Ziffer stehen und haben dieses Problem nicht. Was diejenigen betrifft, die vor 1800 geboren wurden, hatten zu diesem Zeitpunkt wahrscheinlich keine ID-Nummer, ⊙﹏⊙bhan...
Das Folgende ist der reguläre Ausdruck:
Geburtsdatum 1800-2099 (18|19|20)?d{2}(0[1-9]|1[12])(0[1-9]|[12]d|3[01])
Regulärer Ausweisausdruck/^d{6}(18|19|20)?d{2}(0[1-9]|1[12])(0[1-9]|[12]d|3 [ 01])d{3}(d|X)$/i
Regeln zur Ziffernüberprüfung 6-stelliger Adresscode 6-stelliges Geburtsdatum 3-stellige Sequenznummer
Regeln zur Bitüberprüfung: 6-stelliger Adresscode, 8-stelliges Geburtsdatum, 3-stellige Sequenznummer, 1-stellige Prüfziffer
Prüfziffernregelformel: ∑(ai×Wi)(mod 11)…………………………………………(1)
In Formel (1):
i---- stellt die Positionsfolgenummer der Zahlenzeichen von links nach rechts dar, einschließlich des Prüfcodes
ai---- stellt den Zahlenzeichenwert an der i-ten Position dar;
Wi---- stellt den Gewichtungsfaktor an der i-ten Position dar und sein Wert wird gemäß der Formel Wi=2^(n-1) (Mod 11) berechnet.
ich 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
Wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1
*/
//Überprüfung der Rechtmäßigkeit der ID-Nummer
//Unterstützt 15-stellige und 18-stellige ID-Nummern
//Unterstützung der Adresscodierung, des Geburtsdatums und der Überprüfung der Prüfziffer
Funktion IdentityCodeValid(code) {
var city={11:"Beijing",12:"Tianjin",13:"Hebei",14:"Shanxi",15:"Innere Mongolei",21:"Liaoning",22:"Jilin",23:" Heilongjiang ",31:"Shanghai",32:"Jiangsu",33:"Zhejiang",34:"Anhui",35:"Fujian",36:"Jiangxi",37:"Shandong",41:"Henan" , 42:"Hubei",43:"Hunan",44:"Guangdong",45:"Guangxi",46:"Hainan",50:"Chongqing",51:"Sichuan",52:"Guizhou",53 : "Yunnan",54:"Tibet",61:"Shaanxi",62:"Gansu",63:"Qinghai",64:"Ningxia",65:"Xinjiang",71:"Taiwan",81:" Hongkong ",82:"Macau",91:"Übersee"};
var tip = "";
var pass= true;
if(!code || !/^d{6}(18|19|20)?d{2}(0[1-9]|1[12])(0[1-9]|[ 12]d|3[01])d{3}(d|X)$/i.test(code)){
tip = „Das Format der Personalausweisnummer ist falsch“;
pass = false;
}
else if(!city[code.substr(0,2)]){
tip = „Falsche Adresskodierung“;
pass = false;
}
sonst{
//18-stelliger Personalausweis muss die letzte Prüfziffer überprüfen
if(code.length == 18){
code = code.split('');
//∑(ai×Wi)(mod 11)
//Gewichtungsfaktor
var Faktor = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ];
//Ziffer prüfen
var parity = [ 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 ];
var sum = 0;
var ai = 0;
var wi = 0;
für (var i = 0; i < 17; i )
{
ai = code[i];
wi = Faktor[i];
sum = ai * wi;
}
var last = parity[sum % 11];
if(parity[sum % 11] != code[17]){
tip = „Prüfziffernfehler“;
pass =false;
}
}
}
if(!pass) warning(tip);
Rückfahrt;
}
var c = '130981199312253466';
var res= IdentityCodeValid(c);
Wie wäre es damit? Es handelt sich um einen sehr umfassenden Verifizierungscode für die erste ID. Er hat einfach nicht die gleiche Größe wie andere Verifizierungscodes, die Sie online finden. Nehmen Sie ihn einfach und verwenden Sie ihn.