Listo (Ctrl + Enter para ejecutar) Bootcamp Fullstack »
app.js
Tab = 4 espacios
1
// 1. Validación booleana sin estado (Recomendado sin flag 'g')
const patronEmail = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
console.log("--- 1. Validación limpia con regex.test() ---");
console.log("[email protected]:", patronEmail.test("[email protected]")); // true
console.log("correo-invalido.com:   ", patronEmail.test("correo-invalido.com"));    // false

// 2. La trampa de lastIndex con la bandera /g
console.log("\n--- 2. La trampa de lastIndex con /g ---");
const regexConG = /^[a-z]+$/g;
const texto = "kilopolis";

console.log("Llamada 1 test():", regexConG.test(texto)); // true
console.log("lastIndex actual:", regexConG.lastIndex);  // 9 (final de la palabra)
console.log("Llamada 2 test():", regexConG.test(texto)); // false! (busca a partir del índice 9)
console.log("lastIndex tras fallo:", regexConG.lastIndex); // 0 (se reinicia)
console.log("Llamada 3 test():", regexConG.test(texto)); // true de nuevo

// 3. Extracción iterativa con regex.exec()
console.log("\n--- 3. Extracción en bucle con regex.exec() ---");
const logServidor = "ERR_404 en /inicio; ERR_500 en /checkout; ERR_403 en /admin;";
const regexError = /ERR_(\d{3})/g;
let coincidencia;

while ((coincidencia = regexError.exec(logServidor)) !== null) {
  console.log(`Código encontrado: ${coincidencia[1]} en índice: ${coincidencia.index}`);
  console.log(`Siguiente búsqueda iniciará en lastIndex: ${regexError.lastIndex}`);
}
Haz clic para editar este código
Vista Previa
Consola Virtual JavaScript