-
-
Save ViCMAP/55260ffd138fe150040d to your computer and use it in GitHub Desktop.
<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> |
Excelente aporte.
Muchas gracias
Excelente aporte. Misma función en PHP
function valida_cedula($ced) {
$c = str_replace('-', '', $ced);
$cedula = substr($c, 0, -1);
$verificador = substr($c, -1);
$suma = 0;
$cedulaValida = 0;
//Si no cumple el tamaño FALSE
if(strlen($ced) < 11) { return false; }
for ($i = 0; $i < strlen($cedula); $i++) {
$mod = (($i % 2) == 0) ? 1 : 2;
$res = substr($cedula, $i, 1) * $mod;
if ($res > 9) {
$res = strval($res);
$uno = substr($res, 0, 1);
$dos = substr($res, 1, 1);
$res = (int)$uno + (int)$dos;
}
$suma += (int)$res;
}
$el_numero = (10 - ($suma % 10)) % 10;
if ($el_numero == $verificador && substr($cedula, 0, 3) != "000") {
$cedulaValida = TRUE;
}else{
$cedulaValida = FALSE;
}
return $cedulaValida;
}
Excelente aporte.
hice una pequeña modificación para que si la cédula es incorrecta y retorna 0, que mejor retorne false, para luego poder hacer una validación con toastr al final
<script>
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 = false;
}
return cedulaValida;
}
/* crea un input de tipo text y agrega una clase llamada cedula y si la cédula retorna false, con toastr un mensaje */
$('.cedula').blur(function() {
var validacion = valida_cedula(this.value);
console.log('cedula ',this.value, validacion)
if (validacion===false){
toastr.error('La cédula está no es correcta');
$(this).focus();
}
});
</script>
Excelente aporte.
hice una pequeña modificación para que si la cédula es incorrecta y retorna 0, que mejor retorne false, para luego poder hacer una validación con toastr al finalfunction 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 = false; } return cedulaValida; }
/* crea un input de tipo text y agrega una clase llamada cedula y si la cédula retorna false, con toastr un mensaje */
$('.cedula').blur(function() {var validacion = valida_cedula(this.value); console.log('cedula ',this.value, validacion) if (validacion===false){ toastr.error('La cédula está no es correcta'); $(this).focus(); }
});
Muchas gracias. :)
Gracias a ti.
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;
}
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;
}
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;
}
// 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;
}
Excelente!!