javascript Validador DNI,CIF y NIE
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript Validador DNI,CIF y NIE相关的知识,希望对你有一定的参考价值。
const DNI_REGEX = /^(\d{8})([A-Z])$/;
const CIF_REGEX = /^([ABCDEFGHJKLMNPQRSUVW])(\d{7})([0-9A-J])$/;
const NIE_REGEX = /^[XYZ]\d{7,8}[A-Z]$/;
function validateDocumentID(str) {
str = str.toUpperCase().replace(/\s/, '');
let valid = false;
const type = this.documentType(str);
switch (type) {
case 'dni': valid = this.validDNI(str); break;
case 'nie': valid = this.validNIE(str); break;
case 'cif': valid = this.validCIF(str); break;
default: break;
}
return { type, valid };
}
function documentType(str) {
if (str.match(this.DNI_REGEX)) {
return 'dni';
}
if (str.match(this.CIF_REGEX)) {
return 'cif';
}
if (str.match(this.NIE_REGEX)) {
return 'nie';
}
}
function validDNI(dni) {
const dni_letters = 'TRWAGMYFPDXBNJZSQVHLCKE';
const letter = dni_letters.charAt(parseInt(dni, 10) % 23);
return letter === dni.charAt(8);
}
function validNIE(nie) {
let niePrefix = nie.charAt(0);
switch (niePrefix) {
case 'X': niePrefix = 0; break;
case 'Y': niePrefix = 1; break;
case 'Z': niePrefix = 2; break;
default: break;
}
return this.validDNI(niePrefix + nie.substr(1));
}
function validCIF(cif) {
const match = cif.match(this.CIF_REGEX);
const letter = match[1];
const number = match[2];
const control = match[3];
let even_sum = 0;
let odd_sum = 0;
let n;
for (let i = 0; i < number.length; i++) {
n = parseInt(number[i], 10);
if (i % 2 === 0) {
n *= 2;
odd_sum += n < 10 ? n : n - 9;
} else {
even_sum += n;
}
}
const control_digit = (10 - (even_sum + odd_sum)).toString().substr(-1);
const control_letter = 'JABCDEFGHI'.substr(Number(control_digit), 1);
if (letter.match(/[ABEH]/)) {
return control === control_digit;
} else if (letter.match(/[KPQS]/)) {
return control === control_letter;
} else { return control === control_digit || control === control_letter; }
}
以上是关于javascript Validador DNI,CIF y NIE的主要内容,如果未能解决你的问题,请参考以下文章
javascript rut chileno validador y mascara
JavaScript 有效的Nif,Cif,Dni
javascript 智利DNI验证器并获取JSON {run:Number / String,adv:Number / String,dv:Number / String,valid:Boolean
ActionScript 3 Validador
python Validar DNI,NIF,NIE
从AbstractUser继承的模型不会哈希密码字段