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>