Weniger Unsinn, einfach den Code direkt einlegen, das Parsen in den Kommentaren ist sehr klar, also gibt es hier keine BB.
Die Codekopie lautet wie folgt:
/*
Nach den Bestimmungen zu den Zahlen der Staatsbürgerschaft Identität im Nationalen Standard GB 11643-1999 der Volksrepublik China ist die Identitätsnummer der Staatsbürgerschaft ein charakteristischer Kombinationscode, der aus einem siebzehnstelligen digitalen Ontologie-Code und einem einstelligen Verifizierungscode besteht. Die Anordnung ist von links nach rechts: Sechsstelliger Adresscode, achtstelliger Geburtscode, dreistelliger Sequenzcode und einstelliger Überprüfungscode.
Der Adresscode repräsentiert den Kodex der Verwaltungsabteilung des Landkreises (Stadt, Banner und Bezirk), in dem sich der ständige Wohnsitz des codierten Objekts befindet.
Das Datum des Geburtskodex repräsentiert das Jahr, den Monat und den Tag der Geburt des codierten Objekts, und das Jahr wird durch vier Ziffern dargestellt, und es gibt keinen Trennzeichen zwischen Jahr, Monat und Tag.
Der Sequenzcode repräsentiert die Sequenznummer, die Personen, die im selben Jahr, Monat und Tag in dem von demselben Adresscode identifizierten Bereich geboren wurden, zugewiesen wurden. Die ungeraden Zahlen der Bestellcodes sind Männern zugeordnet und sogar Zahlen sind Frauen zugeordnet.
Der Verifizierungscode ist ein Verifizierungscode, der basierend auf den ersten siebzehnstelligen Codes und gemäß dem Verifizierungscode von ISO 7064: 1983.MOD 11-2 berechnet wurde.
Berechnungsmethode des Geburtsdatums.
Der ID -Kartencode des Bits erweitert zunächst das Geburtsjahr auf 4 Bit und fügt einfach eine 19 oder 18 hinzu, zu der alle Menschen gehören, die zwischen 1800 und 1999 geboren wurden.
Diejenigen, die nach dem neuen Jahr geboren wurden, müssen 18 sein, und es gibt keine solche Sorge. Was die vor 1.800 Jahren geborenen betrifft, sollte es zu diesem Zeitpunkt keine ID -Nummer geben, ⊙⊙b Khan ...
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])
ID-Karte regulärer Ausdruck/^/d {6} (18 | 19 | 20)?/D {2} (0 [1-9] | 1 [12]) (0 [1-9] | [12]/d | 3 [01])/D {3} (/d | x) $/i
Bitüberprüfungsregeln 6-stelliger Adresscode + 6-stelliges Geburtsdatum + 3-stellige Sequenznummer
Bitüberprüfungsregeln 6-Bit-Adresscode + 8-Bit-Geburtsdatum + 3-Bit-Sequenznummer + 1-Bit-Verifizierungsbit
Überprüfung der Ziffernregel -Formel: ∑ (Ai × WI) (MOD 11) ……………………………………………………………………………………………………………………………………. ………………………………………………………………………………………………………………………………………….
In der Formel (1):
i ----- Zeigt die Zahlsequenznummer des Zahlenzeichens von links an, einschließlich des Verifizierungscode.
ai ---- repräsentiert den Zahlenzeichenwert an der i-ten Position;
Wi ----- zeigt den Gewichtungsfaktor an der I-ten Position an, und sein Wert wird basierend auf der Formel WI = 2^(n-1) (MOD 11) berechnet.
I 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 Legalität der ID -Nummer
// Unterstützung von 15-stelligen und 18-stelligen ID-Nummern unterstützen
// Supportadressencodierung, Geburtsdatum und Überprüfung der Überprüfungsstellen
Funktion IdentityCodeValid (Code) {
var City = {11: "Peking", 12: "Tianjin", 13: "Hebei", 14: "Shanxi", 15: "Inner 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: "Yun Nan ", 54:" Tibet ", 61:" Shaanxi ", 62:" Gansu ", 63:" Qinghai ", 64:" Ningxia ", 65:" Xinjiang ", 71:" Taiwan ", 81:" Hong Kong ", 82:" Macao ", 91:" Fremd "};
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 = "Identitätskartennummer -Formatfehler";
Pass = falsch;
}
sonst if (! City [code.substr (0,2)]) {
TIP = "Adresscodierungsfehler";
Pass = falsch;
}
anders{
// Die 18-Grad-ID-Karte muss für das letzte Check-Bit überprüft werden
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];
// Kalibrierungsbit
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 = "Bit -Fehler überprüfen";
Pass = falsch;
}
}
}
if (! pass) alarm (tipp);
Rückpass;
}
var c = '130981199312253466';
var res = identityCodevalid (c);
Wie wäre es damit? Es ist ein sehr umfassender Erst -ID -Nummernverifizierungscode. Es ist nicht die gleiche Dimension wie die anderen Online -Verifizierungscodes. Bitte nehmen Sie es weg, wenn Sie es brauchen.