Skip to content

Instantly share code, notes, and snippets.

@ViCMAP
Last active March 8, 2024 03:00
Show Gist options
  • Save ViCMAP/55260ffd138fe150040d to your computer and use it in GitHub Desktop.
Save ViCMAP/55260ffd138fe150040d to your computer and use it in GitHub Desktop.
Validación de cédula dominicana (Javascript)
<script>
/* Modificacion del original en postingcode.com
* Agregado el control de variable cedulaValida y controlando ced.length a menor de 11
* para los casos de cédulas sin guiones
*
* La cedula utilizada ES una cedula valida y asignada al ciudadano gerente de este script
* Modificación por Victor Abreu | www.vicabreu.com
* Nombre del archivo: ValidaCedulaDominicana.html
*/
var cedulaValida = "00116454281";
var cedulaNoValida = "00116454282";
alert ("Cedula " + cedulaValida + ": " + valida_cedula(cedulaValida));
alert ("Cedula " + cedulaValida + ": " + valida_cedula(cedulaNoValida));
/* Validación de número de cédula dominicana
* con longitud de 11 caracteres numéricos o 13 caracteres incluyendo los dos guiones de presentación
* ejemplo sin guiones 00116454281, ejemplo con guiones 001-1645428-1
* el retorno es 1 para el caso de cédula válida y 0 para la no válida
*/
function valida_cedula(ced) {
var c = ced.replace(/-/g,'');
var cedula = c.substr(0, c.length - 1);
var verificador = c.substr(c.length - 1, 1);
var suma = 0;
var cedulaValida = 0;
if(ced.length < 11) { return false; }
for (i=0; i < cedula.length; i++) {
mod = "";
if((i % 2) == 0){mod = 1} else {mod = 2}
res = cedula.substr(i,1) * mod;
if (res > 9) {
res = res.toString();
uno = res.substr(0,1);
dos = res.substr(1,1);
res = eval(uno) + eval(dos);
}
suma += eval(res);
}
el_numero = (10 - (suma % 10)) % 10;
if (el_numero == verificador && cedula.substr(0,3) != "000") {
cedulaValida = 1;
}
else {
cedulaValida = 0;
}
return cedulaValida;
}
</script>
@20010420
Copy link

No es mío pero aquí esta en código de JAVA:

public static boolean validarCedula(String cedula) { //Funciona

    int suma = 0;

    final char[] peso = {'1', '2', '1', '2', '1', '2', '1', '2', '1', '2'};

// Comprobaciones iniciales
    if ((cedula == null) || (cedula.length() != 11)) {
        return false;
    }

// Si no es un nº => la descartamos  
    try {
        Long.parseLong(cedula);
    } catch (Exception e) {
        return false;
    }

    for (int i = 0; i < 10; i++) {

        int a = Character.getNumericValue(cedula.charAt(i));

        int b = Character.getNumericValue(peso[i]);

        char[] mult = Integer.toString(a * b).toCharArray();

        if (mult.length > 1) {
            a = Character.getNumericValue(mult[0]);
            b = Character.getNumericValue(mult[1]);
        } else {
            a = 0;
            b = Character.getNumericValue(mult[0]);
        }

        suma = suma + a + b;
    }

    int digito = (10 - (suma % 10)) % 10;

    // Comprobamos que el dígito de control coincide    
    if (digito != Character.getNumericValue(cedula.charAt(10))) {
        return false;
    }

    return true;
}

@RickzDO
Copy link

RickzDO commented Mar 8, 2024

// Función para validar la cédula
function validarCedula(ced) {
// Eliminar guiones para obtener solo los números
var c = ced.replace(/-/g,'');

// Extraer el número de cédula sin el dígito verificador
var cedula = c.substr(0, c.length - 1);  

// Obtener el dígito verificador
var verificador = c.substr(c.length - 1, 1);  

// Inicializar la suma que se utilizará en el algoritmo
var suma = 0;  

// Variable para almacenar la validez de la cédula (0 para no válida, 1 para válida)
var cedulaValida = 0;

// Verificar que la cédula tenga al menos 11 caracteres
if(ced.length < 11) { 
    return false; 
}  

// Iterar sobre cada dígito de la cédula
for (i=0; i < cedula.length; i++) {  
    // Determinar el factor multiplicador (1 para posición par, 2 para posición impar)
    mod = "";  
    if((i % 2) == 0){ 
        mod = 1; 
    } else { 
        mod = 2; 
    }  

    // Multiplicar el dígito por el factor
    res = cedula.substr(i,1) * mod;  

    // Si el resultado es mayor a 9, sumar los dígitos individuales
    if (res > 9) {  
        res = res.toString();  
        uno = res.substr(0,1);  
        dos = res.substr(1,1);  
        res = eval(uno) + eval(dos);  
    }  

    // Acumular la suma
    suma += eval(res);  
}  

// Calcular el número que se debe agregar para llegar al siguiente múltiplo de 10
el_numero = (10 - (suma % 10)) % 10;  

// Verificar si el número calculado coincide con el dígito verificador y que los primeros tres dígitos no sean "000"
if (el_numero == verificador && cedula.substr(0,3) != "000") {  
    cedulaValida = 1;
}  
else   {  
    cedulaValida = 0;
}  

// Retornar la validez de la cédula
return cedulaValida;

}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment