Das Folgende ist der Gültigkeitsprüfungscode, der JS gemäß den ID -Nummerncodierungsregeln verwendet.
Der Code von IdCard-Validate.js lautet wie folgt:
Kopieren Sie den Code -Code wie folgt:
/**
* 15-Bit-Codierungsregeln für ID-Karte: dddddd yymmdd xx p
* DDDDDD: Regionalcode
* yymmdd: Geburtsdatum
* xx: Sequentielle Klassencodierung, kann nicht bestimmt werden
* P: Geschlecht, ungerade Zahlen sind männlich, sogar Zahlen sind weiblich
* <p />
* 18-Bit-Codierungsregeln für ID-Karte: dddddd yyyymmdd xxx y
* DDDDDD: Regionalcode
* yyyymmdd: Geburtsdatum
* xxx: Sequenztyp -Codierung, kann nicht bestimmt werden, ungerade Zahlen sind Männer, sogar Zahlen sind Frauen
* Y: Überprüfen Sie den Code, der Wert dieser Ziffer kann über die ersten 17 Ziffern erhalten werden
* <p />
* Der Gewichtungsfaktor der 18-stelligen Zahl ist (von rechts nach links) WI = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1]
* Überprüfungsbit y = [1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2]
* Berechnungsformel für das Scheckbit: y_p = mod (∑ (ai × wi), 11)
* I ist die 2 ... 18 Ziffern der ID -Nummer von rechts nach links;
*
*/
var wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1]; // Gewichtungsfaktor
var validEcode = [1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2]; // der ID -Kartenüberprüfungsbitwert.10 repräsentiert x
Funktion IDCARDVALATE (IDCARD) {
idcard = trim (idCard.replace ( / / g, ""));
if (idcard.length == 15) {
return isvalicityBritHby15IDCard (idCard);
} else if (idcard.length == 18) {
var a_idcard = idcard.split (""); // Holen Sie sich das ID -Karten -Array
if (isvalicityBrithby18IDCard (IDCARD) && isTruevalidateCodeBy18IDCard (a_idcard)) {
zurückkehren;
} Anders {
false zurückgeben;
}
} anders {
false zurückgeben;
}
}
/**
* Bestimmen Sie, ob das letzte Überprüfungsbit korrekt ist, wenn die ID -Nummer 18 Ziffern beträgt
* @param a_idcard id number Array
* @zurückkehren
*/
Funktion iStruevalidateCodeby18IDCard (a_idcard) {
var sum = 0;
if (a_idcard [17] .tolowerCase () == 'x') {
a_idcard [17] = 10; // Ersetzen Sie den Bestätigungscode durch das letzte Bit X mit 10 für nachfolgende Operationen
}
für (var i = 0; i <17; i ++) {
sum += wi [i] * a_idcard [i]; // gewichtete Summe
}
Valcodeposition = sum % 11; // wo den Verifizierungscode abgerufen werden soll
if (a_idcard [17] == validEcode [valcodeposition]) {
zurückkehren;
} anders {
false zurückgeben;
}
}
/**
*Beurteilen Sie, ob es sich um einen Mann oder eine Frau über ID -Karte handelt
* @param idcard 15/18-stellige ID-Nummer
* @return 'weiblich' female'-männlich
*/
Funktion maleorfemalbyIdcard (idCard) {
IDCARD = TRIM (IDCARD.REPLACE (// G, "")); // Verarbeiten Sie die ID -Nummer. Einschließlich Räume zwischen Charakteren.
if (idcard.length == 15) {
if (idcard.substring (14,15)%2 == 0) {
zurück "weiblich";
}anders{
zurück "männlich";
}
} else if (idcard.length == 18) {
if (idcard.substring (14,17)%2 == 0) {
zurück "weiblich";
}anders{
zurück "männlich";
}
}anders{
Null zurückkehren;
}
// Die eingehenden Zeichen können direkt als Array verarbeitet werden
// if (idcard.length == 15) {
// alarm (idCard [13]);
// if (idCard [13]%2 == 0) {
// zurück "weiblich ';
// }anders{
// 'männlich' zurückkehren;
//}
//} else if (idcard.length == 18) {
// alarm (idCard [16]);
// if (idCard [16]%2 == 0) {
// zurück "weiblich ';
// }anders{
// 'männlich' zurückkehren;
//}
// }anders{
// null zurückgeben;
//}
}
/**
* Überprüfen Sie, ob der Geburtstag in der 18-stelligen ID-Nummer ein gültiger Geburtstag ist
* @param idcard 18-Bit-Buch-ID-Zeichenfolge
* @zurückkehren
*/
Funktion isvalicityBritHby18IDCard (IDCARD18) {
var Jahr = idCard18.substring (6,10);
var monat = idCard18.substring (10,12);
var day = idcard18.substring (12,14);
var temp_date = neues Datum (Jahr, Parsefloat (Monat) -1, Parsefloat (Tag));
// hier Getrieberei () verwenden, um das Jahr zu erhalten, um das Problem der Millennium -Insekten zu vermeiden
if (temp_date.getingfullyear ()! = Parsefloat (Jahr)
|| temp_date.getMonth ()! = Parsefloat (Monat) -1
|| temp_date.getDate ()! = Parsefloat (Tag)) {
false zurückgeben;
}anders{
zurückkehren;
}
}
/**
* Überprüfen Sie, ob der Geburtstag in der 15-stelligen ID-Nummer ein gültiger Geburtstag ist
* @param idcard15 15-Bit-Buch-ID-Zeichenfolge
* @zurückkehren
*/
Funktion isvalicityBritHby15IDCard (IDCARD15) {
var Jahr = IDCARD15.Substring (6,8);
var monat = idCard15.Substring (8,10);
var day = idCard15.Substring (10,12);
var temp_date = neues Datum (Jahr, Parsefloat (Monat) -1, Parsefloat (Tag));
// Für Ihr Alter in Ihrer alten ID -Karte müssen Sie das Problem des Millennium -Wurms nicht berücksichtigen und die Getyear () -Methode verwenden
if (temp_date.getyear ()! = parsefloat (Jahr)
|| temp_date.getMonth ()! = Parsefloat (Monat) -1
|| temp_date.getDate ()! = Parsefloat (Tag)) {
false zurückgeben;
}anders{
zurückkehren;
}
}
// Entfernen Sie die Kettenkopf- und Schwanzräume
Funktion trim (str) {
return Str.Replace (/(^/s*) | (/s*$)/g, "");
}
Für den obigen Code können Sie bei der tatsächlichen Verwendung des Geschlechts zunächst feststellen, ob die ID -Karte gültig ist. Diese Art von Urteilsvermögen wird in diesem Code -Beispiel nicht vorgenommen und fühlt sich ein bisschen nutzlos an und kann gemäß der tatsächlichen Situation vollständig angereichert werden.