1
// 1. Patrón Canónico de Contraseña Fuerte con Múltiples Lookaheads
// Reglas requeridas (en cualquier posición):
// - Al menos una letra minúscula: (?=.*[a-z])
// - Al menos una letra mayúscula: (?=.*[A-Z])
// - Al menos un dígito: (?=.*\d)
// - Al menos un símbolo especial: (?=.*[!@#$%^&*])
// - Longitud mínima de 8 caracteres: .{8,}
const patronPassword = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*]).{8,}$/;
const contraseñasPrueba = [
"password123", // Falta mayúscula y símbolo
"Password123", // Falta símbolo
"P@ssword123", // ✔ Cumple todas las reglas
"Ab1!", // Muy corta (< 8)
"K!lopolis2026Secure" // ✔ Excelente
];
console.log("--- 1. Validación de Contraseñas con Lookahead ---");
contraseñasPrueba.forEach(pass => {
console.log(`${pass.padEnd(20)} => ${patronPassword.test(pass) ? "✔ Fuerte" : "❌ Débil"}`);
});
// 2. Extracción de Precios con Lookbehind Positivo (?<=...)
console.log("\n--- 2. Extracción de Precios Limpios con Lookbehind ---");
const factura = "Servicio: $150.00 USD, Descuento: $20.00 USD, Total: $130.00 USD";
// Coincide con números decimales solo si tienen el símbolo '$' inmediatamente antes
const regexPrecio = /(?<=\$)\d+(?:\.\d{2})?/g;
const preciosLimpios = factura.match(regexPrecio);
console.log("Valores numéricos puros (sin el símbolo $):");
console.log(preciosLimpios); // ["150.00", "20.00", "130.00"]
Haz clic para editar este código