6. Anclas (^, $) y Límites de Palabra (\b, \B)
Fijar el inicio ^ y fin $ de strings y líneas. Uso de \b para aislar palabras completas y evitar coincidencias accidentales.
¿Qué son las Anclas? (Aserciones de Posición)
Las anclas no consumen ningún carácter de la cadena; en cambio, comprueban una posición geométrica o contexto de frontera dentro del texto.
^(Inicio): Exige que la coincidencia empiece en el primer carácter de la cadena (o al inicio de una línea si se usa la bandera/m).$(Fin): Exige que la coincidencia termine en el último carácter de la cadena (o al final de una línea con/m).
^ y $, tu validador aceptará inyecciones parciales. Por ejemplo, /[0-9]{4}/ aceptará "texto 2026 peligroso", mientras que /^[0-9]{4}$/ aceptará única y exclusivamente "2026".
Límites de Palabra: \b y \B
El metarácter \b (word boundary) representa la frontera invisible entre un carácter de palabra (\w) y un carácter de no-palabra (\W, espacios, signos o el límite de la cadena).
/\bjava\b/i: Coincide con la palabra "Java" o "java", pero no con "JavaScript" ni con "pajavamo"./\Bcat\b/: Exige que "cat" no tenga frontera al inicio, por lo que coincidirá con "tomcat" o "bobcat", pero no con "cat".
⚡ Búsqueda de Palabras Aisladas y Validación Estricta
Distingue palabras completas con \b y asegura validaciones completas de extremo a extremo usando ^ y $.
// 1. El peligro de olvidar las anclas de inicio (^) y fin ($)
const validadorPinInseguro = /\d{4}/;
const validadorPinSeguro = /^\d{4}$/;
const intentoAtaque = "PIN: 1234; DROP TABLE usuarios;";
console.log("--- 1. Validación Estricta con ^ y $ ---");
console.log("¿Pasa validador inseguro?", validadorPinInseguro.test(intentoAtaque)); // true (¡Peligro!)
console.log("¿Pasa validador seguro? ", validadorPinSeguro.test(intentoAtaque)); // false (Correcto)
// 2. Aislamiento de palabras exactas con \b
console.log("\n--- 2. Búsqueda con Límites de Palabra (\\b) ---");
const lenguajes = "Java, JavaScript, TypeScript, JavaEE, Python";
const regexSinLimites = /Java/g;
const regexConLimites = /\bJava\b/g;
console.log("Coincidencias sin \\b (captura prefijos indeseados):");
console.log(lenguajes.match(regexSinLimites)); // ["Java", "Java", "Java"]
console.log("\nCoincidencias con \\b (solo la tecnología exacta):");
console.log(lenguajes.match(regexConLimites)); // ["Java"]
// 3. Reemplazo seguro de palabras clave
const textoArticulo = "El gato persa y el gato montés jugaban con el pescador.";
const textoModificado = textoArticulo.replace(/\bgato\b/g, "felino");
console.log("\n--- 3. Sustitución Segura ---");
console.log(textoModificado);
Mini-Quiz de Retención
Comprueba tu comprensión antes de pasar a la siguiente lección¿Con cuál de las siguientes cadenas coincidirá la expresión /\bauto\b/i?
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.🚀 ¿Quieres dominar Regex en JavaScript: Expresiones Regulares & RegExp y crear proyectos reales?
Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.
🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.