function EsCedula(elTexto) { var es = true; //validar longitud if (elTexto.length != 14) { es = false; } else { //verificar si tiene el formato correcto var RegExPattern = /^\d{13}[A-Z]{1}$/; if (!elTexto.match(RegExPattern)) { es = false; } else { //verificar si contiene una fecha válida var sFecha = elTexto.substring(3, 9); var sDia = elTexto.substring(3, 5); var sMes = elTexto.substring(5, 7); var sAnio = elTexto.substring(7, 9); var aa = parseInt(sAnio); var mm = parseInt(sMes); var dd = parseInt(sDia); if (aa >= 0 && aa <= 29) { aa += 2000; } else { aa += 1900; } var bisiesto = false; if (aa % 2 == 0) { if (aa % 4 == 0) { bisiesto = true; } } if (mm < 1 || mm > 12) { es = false; } else { switch (mm) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: if (dd < 1 || dd > 31) { return false; } break; case 2: if (bisiesto) { if (dd < 1 || dd > 29) { es = false; } } else { if (dd < 1 || dd > 28) { es = false; } } break; default: if (dd < 1 || dd > 30) { es = false; } break; } } } } return es; } function ValidarCedula(cadena) { if (EsCedula(cadena)) { alert('Es n° cedula es correcto!'); } else { alert('¡El n° de cédula no es válido. Deben ser trece dígitos mas una letra al final, los caracteres del 4to al 9no deben representar una fecha válida!'); } return false; }
<form> <label>Cedula</label> <input type="text" id="tCedula" name="tCedula" /> <input type="button" value="Validar" id="btnValidar" name="btnValidar" onclick="return ValidarCedula(tCedula.value);"/> </form>