AdSense Placeholder
Slot: header_reference_page
Una expresión regular (regex) describe un patrón de texto. Sirve para buscar, validar o reemplazar texto en editores, herramientas de línea de comandos y todos los lenguajes de programación. Pruebe cualquier patrón en vivo en el Probador de Regex. Cada ejemplo de abajo se ejecutó en JavaScript y Python y produce el resultado indicado.
Caracteres y clases
| Patrón |
Significado |
Ejemplo |
. |
cualquier carácter salvo el salto de línea |
a-c → a, -, c |
\d+ |
uno o más dígitos (\d es un dígito, \D no) |
a12b345 → 12, 345 |
\w+ |
caracteres de palabra: letras, dígitos y guion bajo (\W es lo contrario) |
hi_there! ok → hi_there, ok |
a\sb |
espacio en blanco: espacio, tabulador, salto de línea (\S es lo contrario) |
a b ab → a b |
gr[ae]y |
un carácter del conjunto |
gray grey groy → gray, grey |
[^0-9]+ |
cualquier cosa fuera del conjunto |
ab12cd3 → ab, cd |
[a-f0-9]+ |
rangos dentro de un conjunto |
ff09 xyz 1a → ff09, 1a |
Anclas y límites
| Patrón |
Significado |
Ejemplo |
^\d+$ |
^ es el inicio y $ el final: debe coincidir todo el texto |
12345 → 12345 |
^\d+$ |
|
12a45 → sin coincidencia |
\bcat\b |
límite de palabra: solo coincide con cat como palabra completa |
cat concat cat. → cat, cat |
Cuantificadores
| Patrón |
Significado |
Ejemplo |
ab* |
* significa cero o más del elemento anterior |
a ab abbb → a, ab, abbb |
ab+ |
+ significa uno o más |
a ab abbb → ab, abbb |
colou?r |
? significa opcional (cero o uno) |
color colour → color, colour |
\d{3} |
{n} significa exactamente n veces |
12 123 12345 → 123, 123 |
\d{2,3} |
{n,m} significa entre n y m veces |
1 12 123 1234 → 12, 123, 123 |
<.+> |
voraz (greedy): toma todo lo que puede |
<a><b> → <a><b> |
<.+?> |
perezoso (lazy): añada ? para tomar lo mínimo |
<a><b> → <a>, <b> |
Grupos, alternancia y anticipación
| Patrón |
Significado |
Ejemplo |
cat|dog |
| significa uno u otro lado |
hotdog cat → dog, cat |
(?:ab)+ |
un grupo que no captura, para poder aplicarle un cuantificador |
ababab ab → ababab, ab |
(\w)\1 |
\1 repite lo que capturó el grupo 1 |
hello book → ll, oo |
(?<year>\d{4})-\d{2} |
un grupo con nombre, (?<nombre>...) (JavaScript y PCRE; Python escribe (?P<nombre>...)) |
on 2026-10-03 → 2026-10 |
\d+(?=%) |
anticipación (lookahead): seguido de %, sin consumirlo |
50% 20 30% → 50, 30 |
foo(?!bar) |
anticipación negativa: no seguido de bar |
foobar foobaz → foo |
(?<=\$)\d+ |
retrospección (lookbehind): precedido de $, sin consumirlo |
cost $15 or 20 → 15 |
Banderas (flags)
| Bandera |
Nombre |
Efecto |
i |
Ignorar mayúsculas |
cat también coincide con Cat y CAT |
g |
Global |
Encuentra todas las coincidencias, no solo la primera |
m |
Multilínea |
^ y $ coinciden en cada línea, no solo en el texto completo |
s |
El punto incluye saltos de línea |
. también coincide con un salto de línea |
u |
Unicode |
Trata el patrón como Unicode y permite las clases \p{...} |
Caracteres que hay que escapar
Tienen un significado especial, así que ponga una barra invertida delante para que coincidan literalmente: . ^ $ * + ? ( ) [ ] { } | \. Por ejemplo, 3\.14 coincide con 3.14 pero no con 3x14.
Patrones prácticos
| Para |
Patrón |
Coincide con |
| Entero |
^-?\d+$ |
42, -7 |
| Número decimal |
^-?\d+(\.\d+)?$ |
3.14, -2, 10 |
| Color hexadecimal |
^#(?:[0-9a-fA-F]{3}){1,2}$ |
#fff, #a1B2c3 |
| Correo (comprobación aproximada) |
^[^\s@]+@[^\s@]+\.[^\s@]+$ |
[email protected], [email protected] |
| Dirección IPv4 |
^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|1?\d?\d)$ |
192.168.1.1, 0.0.0.0, 255.255.255.255 |
| Forma de fecha ISO |
^\d{4}-\d{2}-\d{2}$ |
2026-10-03 |
| Palabra repetida |
\b(\w+)\s+\1\b |
the the, is is |
Estos patrones comprueban la forma del texto. Un correo real, por ejemplo, no se puede validar del todo con una regex: envíe un mensaje de confirmación.
Trampas habituales
- La coincidencia voraz toma todo lo posible; use
? tras un cuantificador para hacerla perezosa.
- Retroceso catastrófico. Cuantificadores anidados como
(a+)+ pueden tardar un tiempo exponencial con ciertas entradas. Mantenga los patrones simples cuando se ejecutan sobre texto no fiable.
- Los dialectos difieren. JavaScript, Python, PCRE (PHP y muchas herramientas) y POSIX admiten una sintaxis algo distinta, sobre todo en grupos con nombre, retrospección y Unicode.
- No analice HTML con regex. Use un analizador de verdad para estructuras anidadas.