Heim  >  Artikel  >  Web-Frontend  >  JavaScript-Überprüfung der ID-Nummer_Javascript-Kenntnisse

JavaScript-Überprüfung der ID-Nummer_Javascript-Kenntnisse

WBOY
WBOYOriginal
2016-05-16 16:11:251123Durchsuche

Wenn wir eine Internet-Website erstellen, verwenden wir bei der Registrierung persönlicher Daten häufig unsere ID-Nummer. Wir müssen die ID-Nummer überprüfen, sonst geben andere einfach die Nummer ein und geben Ihnen das Gefühl, dass diese Website sehr ist beschissen.

Es gibt Regeln für ID-Nummern.

Struktur und Form

 1. Zahlenstruktur
Die Bürgeridentitätsnummer ist 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.
2. Adresscode
Gibt den Verwaltungsbezirkscode des Kreises (Stadt, Banner, Bezirk) an, in dem sich der ständige Wohnsitz des Kodierungsobjekts befindet, und muss gemäß den Bestimmungen von GB/T2260 implementiert werden.
3. Geburtsdatumscode
Gibt das Jahr, den Monat und den Tag der Geburt des Kodierungsobjekts an. Es wird gemäß den Bestimmungen von GB/T7408 implementiert. Es gibt kein Trennzeichen zwischen den Jahres-, Monats- und Tagescodes.
4. Sequenzcode
Stellt die Sequenznummern dar, die Personen zugewiesen wurden, die im selben Jahr, Monat und Tag innerhalb des durch denselben Adresscode identifizierten Gebiets geboren wurden. Die ungeraden Nummern der Sequenzcodes werden Männern zugewiesen, und die geraden Nummern werden Frauen zugewiesen.
5. Bestätigungscode
Basierend auf dem vorherigen siebzehnstelligen Code wird der Prüfcode gemäß dem Prüfcode ISO 7064:1983.MOD 11-2 berechnet.
Berechnungsmethode

1. Multiplizieren Sie die vorherigen 17 Ziffern der ID-Nummer mit verschiedenen Koeffizienten. Die Koeffizienten von der ersten bis zur siebzehnten Stelle sind: 7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2.
2. Addieren Sie die Ergebnisse der Multiplikation dieser 17-stelligen Zahlen und Koeffizienten.
3. Teilen Sie die addierte Summe durch 11. Was ist der Rest?
4. 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.
5. Aus dem oben Gesagten wissen wir, dass bei einem Rest von 3 die 18. Ziffer des Personalausweises als 9 erscheint. Ist die entsprechende Zahl 2, ist die letzte Zahl auf dem Personalausweis die römische Zahl x.
Beispiel: Die Ausweisnummer eines Mannes lautet [53010219200508011x]. Mal sehen, ob es sich bei diesem Ausweis um einen legalen Ausweis handelt.
Zuerst erhalten wir die Summe der Produkte der ersten 17 Ziffern [(5*7) (3*9) (0*10) (1*5) (0*8) (2*4) (1*2) (9*1) (2*6) (0*3) (0*7) (5*9) (0*10) (8*5) (0*8) (1*4) (1*2) ] ist 189, dann dividieren Sie 189 durch 11 und das Ergebnis ist 189/11=17----2, was bedeutet, dass der Rest 2 ist. Schließlich können wir durch die entsprechenden Regeln erkennen, dass der Prüfcode, der dem Rest 2 entspricht, X ist. Daher kann festgestellt werden, dass es sich um eine korrekte ID-Nummer handelt.
Das Obige stammt aus der Baidu-Enzyklopädie.

Dies ist ein relevantes Informationsbild, das im Internet gefunden wurde.

Den bekannten Informationen zufolge können wir die interne Implementierung dieser Methode in js schreiben. Die Überprüfung der ersten 17 Ziffern ist relativ einfach umzusetzen, daher werde ich nicht ins Detail gehen und mich auf die letzte Ziffer des Prüfcodes konzentrieren.

Code kopieren Der Code lautet wie folgt:

// Überprüfung der ID-Nummer
Funktion isIdCard(cardid) {
// Regulärer Ausweisausdruck (18 Bit)
var isIdCard2 = /^[1-9]d{5}(19d{2}|[2-9]d{3})((0d)|(1[0-2]))(([0|1 |2]d)|3[0-1])(d{4}|d{3}X)$/i;
var stard = "10X98765432"; //Die letzte ID-Nummer
var first = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; //1-17 Koeffizient
var sum = 0;
If (!isIdCard2.test(cardid)) {
          return false;
}
var Jahr = cardid.substr(6, 4);
var Monat = cardid.substr(10, 2);
var day = cardid.substr(12, 2);
var Geburtstag = cardid.substr(6, 8);
If (birthday != dateToString(new Date(year '/' monatlich '/' day))) { //Überprüfen Sie, ob das Datum gültig ist
          return false;
}
for (var i = 0; i < cardid.length - 1; i ) {
         sum = cardid[i] * first[i];
}
var result = sum % 11;
var last = stard[result]; //Die berechnete letzte ID-Nummer
If (cardid[cardid.length - 1].toUpperCase() == last) {
         return true;
} sonst {
          return false;
}
}
//Datum in String konvertieren und Datumsformat 20080808 zurückgeben
Funktion dateToString(date) {
If (Datumsinstanz von Datum) {
        var year = date.getFullYear();
        var Monat = date.getMonth() 1;
Monat = Monat < 10 ? '0' Monat: Monat;
        var day = date.getDate();
Tag = Tag < 10 ? '0' Tag: Tag;
          Jahr, Monat, Tag zurückgeben;
}
Rückgabe '';
}

Hier wird nur der 18-stellige Personalausweis verifiziert, der 15-stellige Personalausweis der ersten Generation kann nicht verwendet werden.

Hier wird auch die Rechtmäßigkeit des Datums überprüft. Bei illegalen Datumsangaben wie 0230, 0431 usw. wird die Überprüfung nicht bestanden.

Wir können diese Methode auch zur JQuery-Validierung hinzufügen, um die Überprüfung zu erleichtern.

Schreiben Sie eine benutzerdefinierte JQuery-Validierungsüberprüfungsmethode

Code kopieren Der Code lautet wie folgt:

// Überprüfung der ID-Nummer
jQuery.validator.addMethod("isIdCard",
Funktion(Wert, Element) {
Gibt this.optional(element) || zurück. (isIdCard(value));
},
„Illegale ID-Nummer!“);

Lassen Sie uns eine einfache Demo machen und sehen, wie es funktioniert.

Code kopieren Der Code lautet wie folgt:

 
 
    
        
        
             身份证号校验