Ce qui suit est le code de vérification de validité utilisant JS selon les règles de codage du numéro d'identification.
Le code idcard-validate.js est le suivant:
Copier le code du code comme suit:
/ **
* Règles de codage 15 bits pour la carte d'identité: dddddd yymmdd xx p
* DDDDDD: code régional
* yymmdd: date de naissance
* xx: codage de classe séquentiel, ne peut pas être déterminé
* P: le sexe, les nombres impairs sont des hommes, même les nombres sont des femmes
* <p />
* Règles de codage 18 bits pour la carte d'identité: dddddd yyyymmdd xxx y
* DDDDDD: code régional
* yyyymmdd: date de naissance
* xxx: codage de type de séquence, ne peut pas être déterminé, les nombres impairs sont des hommes, même les nombres sont des femmes
* y: cocher le code, la valeur de ce chiffre peut être obtenue à travers les 17 premiers chiffres
* <p />
* Le facteur de pondération du nombre à 18 chiffres est (droit à gauche) wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1]
* Bit de vérification y = [1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2]
* Formule de calcul pour le bit de contrôle: y_p = mod (∑ (ai × wi), 11)
* I est les 2 ... 18 chiffres du numéro d'identification de droite à gauche;
*
* /
var wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1]; // Facteur de pondération
var valideCode = [1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2]; // La valeur du bit de vérification de la carte d'identité.10 représente x
fonction idcardValidate (idcard) {
idcard = trim (idcard.replace (/ / g, ""));
if (idcard.length == 15) {
return isValidityBrithBy15IdCard (idcard);
} else if (idcard.length == 18) {
var a_idcard = idcard.split (""); // Obtenez le tableau de carte d'identité
if (isValidityBrithBy18idCard (idcard) && isTrueValidateCodeBy18idCard (a_idcard)) {
Retour Vrai;
} Autre {
retourne false;
}
} autre {
retourne false;
}
}
/ **
* Déterminez si le dernier bit de vérification est correct lorsque le numéro d'identification est de 18 chiffres
* @param a_idcard
* @retour
* /
fonction isTrueValidateCodeBy18idCard (a_idcard) {
var sum = 0; // Déclarer la variable de somme pondérée
if (a_idcard [17] .tolowercase () == 'x') {
a_idcard [17] = 10; // Remplacez le code de vérification par le dernier bit x avec 10 pour les opérations suivantes
}
pour (var i = 0; i <17; i ++) {
sum + = wi [i] * a_idcard [i]; // somme pondérée
}
valcodepositif = sum% 11; // où obtenir le code de vérification
if (a_idcard [17] == validecode [valcodepositif]) {
Retour Vrai;
} autre {
retourne false;
}
}
/ **
* Jugez que ce soit un homme ou une femme par carte d'identité
* @param idcard
* @return 'féminin-feme'-male
* /
fonction maleorfemalbyidcard (idcard) {
idcard = trim (idcard.replace (/ / g, "")); // traite le numéro d'identification. Y compris les espaces entre les personnages.
if (idcard.length == 15) {
if (idcard.substring (14,15)% 2 == 0) {
retour «femelle»;
}autre{
retour «mâle»;
}
} else if (idcard.length == 18) {
if (idcard.substring (14,17)% 2 == 0) {
retour «femelle»;
}autre{
retour «mâle»;
}
}autre{
Retourner null;
}
// Les caractères entrants peuvent être traités directement comme un tableau
// if (idcard.length == 15) {
// alerte (idcard [13]);
// if (idcard [13]% 2 == 0) {
// retourne «femelle»;
// }autre{
// retourne «mâle»;
//}
//} else if (idcard.length == 18) {
// alerte (idcard [16]);
// if (idcard [16]% 2 == 0) {
// retourne «femelle»;
// }autre{
// retourne «mâle»;
//}
// }autre{
// retourne null;
//}
}
/ **
* Vérifiez si l'anniversaire du numéro d'identification à 18 chiffres est un anniversaire valide
* @param idcard 18 bits de livre d'identifiant de livre
* @retour
* /
fonction isValidityBrithBy18idCard (idcard18) {
var année = idcard18.substring (6,10);
var mois = idcard18.substring (10,12);
var day = idcard18.substring (12,14);
var temp_date = new Date (année, parsefloat (mois) -1, parsefloat (jour));
// Utilisez Gettillyear () ici pour obtenir l'année pour éviter le problème des insectes du millénaire
if (temp_date.getlyar ()! = paSefloat (année)
|| temp_date.getmonth ()! = parsefloat (mois) -1
|| temp_date.getDate ()! = paSefloat (jour)) {
retourne false;
}autre{
Retour Vrai;
}
}
/ **
* Vérifiez si l'anniversaire dans le numéro d'identification à 15 chiffres est un anniversaire valide
* @param idcard15 chaîne d'ID de livre 15 bits
* @retour
* /
fonction isValidityBrithBy15IdCard (idcard15) {
var année = idcard15.Substring (6,8);
var mois = idcard15.Substring (8,10);
var day = idcard15.Substring (10,12);
var temp_date = new Date (année, parsefloat (mois) -1, parsefloat (jour));
// Pour votre âge dans votre ancienne carte d'identité, vous n'avez pas besoin de considérer le problème de Millennium Worm et d'utiliser la méthode Getyear ()
if (temp_date.getyear ()! = parsefloat (année)
|| temp_date.getmonth ()! = parsefloat (mois) -1
|| temp_date.getDate ()! = paSefloat (jour)) {
retourne false;
}autre{
Retour Vrai;
}
}
// Retirez les espaces de tête et de queue de chaîne
Fonction Trim (str) {
return str.replace (/ (^ / s *) | (/ s * $) / g, "");
}
Pour le code ci-dessus, dans l'utilisation réelle du sexe, vous pouvez d'abord déterminer si la carte d'identité est valide. Ce type de jugement n'est pas fait dans cet exemple de code, et il se sent un peu inutile et peut être pleinement enrichi en fonction de la situation dans une utilisation réelle.