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>
@armpxd
Copy link

armpxd commented Nov 3, 2020

Excelente aporte, dejare el mismo codigo pero en c#

public static bool validar_cedula ( string ced)
{
var c = ced.Replace("-","");
var cedula = c.Substring(0, c.Length - 1);
var verificador = int.Parse(c.Substring(c.Length -1,1));
var suma = 0;
var cedulaValida = false;

        if(ced.Length < 11){ return cedulaValida; }

        for (int i= 0; i < cedula.Length; i++) {  
        var mod = 0;  
         if((i % 2) == 0){ mod = 1; } else { mod = 2; }  

         var res = int.Parse(cedula.Substring(i,1)) * mod;  
         if (res > 9) {  
              var resString = res.ToString();  
              var uno = resString.Substring(0,1);  
              var dos = resString.Substring(1,1);  
              res = int.Parse(uno) + int.Parse(dos);  
         }  
         suma += res;  
    } 
    var el_numero = (10 - (suma % 10)) % 10;  
    if (el_numero == verificador && cedula.Substring(0,3) != "000") {  
      cedulaValida = true;
    }  
    else   {  
     cedulaValida = false;
    }  

        return cedulaValida;
    }

@20010420
Copy link

He pasado el código para JAVA pero tiene un error de de valores si alguien lo logra solucionar le estaré sumamente agradecido

public boolean Validar_cedula(String ced) {
String c = ced.replace("-", "");
String cedula;
cedula = c.substring(0, 1 - c.length());
int verificador = Integer.parseInt(c.substring(c.length() - 1, 1)); //Aqui esta el error
int suma = 0;
boolean cedulaValida = false;

    if (ced.length() < 11) {
        return cedulaValida;
    }

    for (int i = 0; i < cedula.length(); i++) {
        int mod = 0;
        if ((i % 2) == 0) {
            mod = 1;
        } else {
            mod = 2;
        }
        int res = Integer.parseInt(cedula.substring(i, 1)) * mod;
        if (res > 9) {
            String resString = String.valueOf(res);
            String uno = resString.substring(0, 1);
            String dos = resString.substring(1, 1);
            res = Integer.parseInt(uno) + Integer.parseInt(dos);  
     }  
     suma += res;
    }
    int el_numero = (10 - (suma % 10)) % 10;
    if (el_numero == verificador && cedula.substring(0, 3)!= "000") {
        cedulaValida = true;
    } else {
        cedulaValida = false;
    }
    return cedulaValida;
}

@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