1
// Módulo de Validación de Formularios (Kilopolis Academia)
const Validador = {
reglas: {
email: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/,
username: /^[a-z0-9_]{3,16}$/,
slug: /^[a-z0-9]+(?:-[a-z0-9]+)*$/,
telefonoE164: /^\+?[1-9]\d{9,14}$/,
passwordFuerte: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*]).{8,32}$/
},
validarCampo(tipo, valor) {
const patron = this.reglas[tipo];
if (!patron) throw new Error(`Regla de validación desconocida: ${tipo}`);
return patron.test(String(valor).trim());
},
validarFormulario(datos) {
const errores = {};
for (const [campo, valor] of Object.entries(datos)) {
if (this.reglas[campo] && !this.validarCampo(campo, valor)) {
errores[campo] = `El valor ingresado para "${campo}" no cumple con el formato requerido.`;
}
}
return {
esValido: Object.keys(errores).length === 0,
errores
};
}
};
// Prueba con datos reales
const formularioAlumno = {
username: "carlos_dev",
email: "[email protected]",
slug: "mi-primer-proyecto-fullstack",
telefonoE164: "+573001234567",
passwordFuerte: "Kilopolis*2026!"
};
console.log("--- 1. Validación de Formulario Válido ---");
console.log(Validador.validarFormulario(formularioAlumno));
console.log("\n--- 2. Validación de Formulario con Errores ---");
const formularioInvalido = {
username: "User con Espacios!",
email: "correo-invalido@",
slug: "-slug-con-guion-inicial-",
passwordFuerte: "12345"
};
console.log(Validador.validarFormulario(formularioInvalido));
Haz clic para editar este código