Lookahead y lookbehind en regex, explicados con tableros interactivos
Los lookarounds permiten a una regex comprobar lo que hay antes o después de un punto sin incluirlo en la coincidencia. Así funcionan los cuatro, dónde brillan y cuándo un patrón normal es más corto.

· 7 min de lectura
/q(?!u)/
atrapa
- iraq
- qatar
- qi
deja libre
- queen
- quiet
- quote
La mayor parte de una regex consume texto. cat se come tres caracteres, \d+ se come todos los dígitos que puede, y el motor avanza más allá de lo que ha encontrado.
Los lookarounds no. Se quedan en un punto de la cadena, miran hacia delante o hacia atrás y responden sí o no. Coinciden con cero caracteres. Esa sola idea te permite expresar cosas que un patrón normal no puede, como “una q que no va seguida de una u” o “un número que viene justo después de un signo de dólar, sin el signo de dólar”.
Todos los ejemplos de abajo son interactivos: edita el patrón y las líneas se actualizan, o pulsa Probar para abrirlo en la Zona de pruebas.
01Los cuatro lookarounds
| Sintaxis | Nombre | Tiene éxito cuando… |
|---|---|---|
(?=X) |
lookahead positivo | X viene a continuación |
(?!X) |
lookahead negativo | X no viene a continuación |
(?<=X) |
lookbehind positivo | X viene justo antes |
(?<!X) |
lookbehind negativo | X no viene justo antes |
El nombre indica la dirección: lookahead (“mirar hacia delante”) comprueba el texto que sigue a la posición actual, lookbehind (“mirar hacia atrás”) comprueba el texto anterior. = significa “tiene que estar”, ! significa “no puede estar”.
02Lookahead negativo: una q sin u
En inglés, la q casi siempre va seguida de u. Atrapar las excepciones es cosa de una línea con un lookahead negativo:
Fíjate en iraq. Una alternativa tentadora es q[^u], “una q seguida de cualquier cosa menos u”. Pero [^u] tiene que coincidir con un carácter, y la q de iraq es la última letra. El lookahead solo pide que lo siguiente no sea una u, y el final de la cadena no es una u.
03Lookahead positivo: busca una parte, comprueba lo que sigue
Un lookahead positivo te permite exigir cierto contexto sin incluirlo en la coincidencia. Aquí queremos el número, pero solo cuando es una cantidad en dólares:
/\d+(?= dollars)/Debe coincidir1/1
- it costs 40 dollars
No debe2/2
- 40 euros
- dollars 40
Esto importa siempre que reemplazas o extraes texto. Haz un buscar y reemplazar con \d+(?= dollars) y cambiarás el número, mientras la palabra “dollars” se queda exactamente como estaba.
04Lookaheads apilados: varias reglas a la vez
Como los lookaheads no mueven la posición, puedes poner varios en el mismo punto. Cada uno comprueba una regla distinta sobre toda la cadena. Es la comprobación clásica de contraseñas: al menos un dígito, al menos una mayúscula y ocho caracteres o más:
/^(?=.*\d)(?=.*[A-Z]).{8,}$/Debe coincidir2/2
- Hunter2024
- Regex1Hunter
No debe3/3
- hunter2024
- SHORT1
- NoDigitsHere
Léelo de izquierda a derecha: desde el principio, más adelante hay un dígito; desde ese mismo principio, más adelante hay una mayúscula; luego coincide con 8 caracteres o más hasta el final. El orden da igual, y por eso mismo los lookaheads ganan a escribir todas las combinaciones.
05Lookbehind: comprueba lo que vino antes
El lookbehind es la imagen en el espejo. (?<=\$)\d+ coincide con los dígitos que vienen justo después de un signo de dólar, sin el propio $:
Y la forma negativa encuentra los números que no son precios:
/(?<!\$)\b\d+\b/Debe coincidir2/2
- 42 apples
- year 2026
No debe2/2
- costs $42
- $100
Esa última explicación esconde una trampa real. Sin los límites de palabra, (?<!\$)\d+ coincidiría sin problema con 00 en $100, porque esos 0 no están justo después del $. El lookbehind solo comprueba el punto donde empieza la coincidencia, así que a menudo necesitas \b o un ancla para fijar ese punto.
06Cuándo ganan los lookarounds en el golf, y cuándo no
En el golf de regex cada carácter cuenta, así que conviene saber cuándo vale la pena un lookaround.
Para dos letras en cualquier orden, una alternancia normal es más corta: a.*e|e.*a tiene 9 caracteres y (?=.*a).*e tiene 10. Pero el número de órdenes crece deprisa (2 para dos letras, 6 para tres, 24 para cuatro), mientras que cada lookahead extra cuesta siempre siete caracteres. Aquí tienes un tablero en el que todos los monstruos contienen una a, una e y una i, en cualquier orden:
Tablerocertain · machine · relation · dialect · patience vs garden · pencil · plastic · money · violin
- todos los órdeneslo resuelve47
/a.*e.*i|a.*i.*e|e.*a.*i|e.*i.*a|i.*a.*e|i.*e.*a/ - lookaheadslo resuelve17
/(?=.*a)(?=.*e).*i/
La versión con lookaheads funciona porque una búsqueda de regex prueba cada posición por turno. En la primera posición, los dos lookaheads recorren la palabra entera, así que da igual dónde estén la a y la e.
07Pruébalo
La misma idea, un tablero nuevo. Todos los monstruos tienen al menos un dígito y al menos una mayúscula, en cualquier orden:
Atrapa las palabras que tienen un dígito y una mayúscula, en cualquier orden.
Objetivos · 0/5 atrapados
- Hunt3robjetivo
- R2d2objetivo
- x9Yobjetivo
- Agent47objetivo
- 7Seasobjetivo
Inocentes · 0 errores
- hunterinocente
- r2d2inocente
- AGENTinocente
- 1999inocente
- x9yinocente
Escribe una regex: el tablero se actualiza mientras escribes.
08Lo que debes saber antes de usarlos
- Los lookarounds tienen ancho cero.
(?=\d)por sí solo coincide con una cadena vacía delante de un dígito. Viene bien para insertar texto (como separadores de miles) y confunde cuando esperabas coincidir con el propio dígito. - El soporte varía. JavaScript (todos los navegadores modernos y Node), Python, Java, .NET y PCRE admiten lookahead y lookbehind. El módulo
reintegrado de Python solo permite lookbehind de ancho fijo, así que(?<=\$\d*)ahí es un error, mientras que JavaScript lo acepta. El paquete estándarregexpde Go no admite ningún lookaround. - Prefiere el patrón normal cuando se entiende.
q[^u]|q$también funciona, y a algunas personas les resulta más fácil de seguir. Usa un lookaround cuando deje clara la intención o te ahorre complejidad de verdad.
09Sigue practicando
- La Guía de regex tiene una referencia rápida con más ejemplos interactivos.
- Los lookarounds aparecen en los tableros del día más difíciles. Puede que la caza de hoy necesite uno.