Guía básica de Regex para principiantes
Aprende las expresiones regulares desde cero: patrones básicos, ejemplos reales y cómo probarlas con el Regex Tester de Fluxom antes de usarlas en tu código.
Qué es una expresión regular
Una expresión regular, o regex, es una secuencia de caracteres que describe un patrón de texto. Sirve para buscar, validar y reemplazar fragmentos: encontrar todos los números de un documento, comprobar que un campo parece un correo o limpiar espacios sobrantes.
Su fama de difícil viene de que la sintaxis es muy compacta. La buena noticia es que con unos diez elementos puedes resolver la mayoría de los casos reales. Esta guía los repasa uno por uno, con ejemplos en JavaScript, donde una regex se escribe entre barras: /patrón/banderas.
Los bloques básicos
Empieza por los literales: la expresión /gato/ encuentra exactamente la palabra «gato». A partir de ahí se añaden símbolos con significado especial:
| Símbolo | Significado | Ejemplo |
|---|---|---|
. | Cualquier carácter salvo salto de línea | /g.to/ encuentra «gato» y «geto» |
\d | Un dígito del 0 al 9 | /\d\d/ encuentra «42» |
\w | Letra, número o guion bajo | /\w+/ encuentra palabras |
\s | Espacio, tabulación o salto de línea | /\s+/ encuentra huecos |
[abc] | Uno de los caracteres indicados | /[aeiou]/ encuentra vocales |
[^abc] | Cualquier carácter menos esos | /[^0-9]/ encuentra no dígitos |
Para escribir un carácter especial de forma literal, como un punto, se antepone una barra invertida: \..
Cuantificadores y anclas
Los cuantificadores indican cuántas veces se repite lo anterior:
*cero o más veces.+una o más veces.?cero o una vez, es decir, opcional.{3}exactamente tres veces, y{2,4}entre dos y cuatro.
Las anclas fijan la posición. ^ es el inicio y $ el final del texto, y \b marca el límite de una palabra. Por eso /^\d+$/ solo acepta cadenas formadas únicamente por dígitos, mientras que /\d+/ encuentra dígitos en cualquier parte.
En código:
"Hay 12 gatos y 3 perros".match(/\d+/g);
// ["12", "3"]
/^\d+$/.test("2026"); // true
/^\d+$/.test("20a26"); // falseGrupos, alternativas y banderas
Los paréntesis agrupan y capturan. En /(\d{4})-(\d{2})-(\d{2})/ cada par de paréntesis guarda una parte de una fecha. La barra vertical expresa alternativas: /gato|perro/ encuentra cualquiera de las dos palabras.
Las banderas se escriben tras la barra final y cambian el comportamiento:
gbusca todas las coincidencias en lugar de solo la primera.iignora mayúsculas y minúsculas.mhace que^y$actúen por líneas.
Con grupos puedes extraer partes de un texto:
const m = "2026-10-04".match(/(\d{4})-(\d{2})-(\d{2})/);
// m[1] = "2026", m[2] = "10", m[3] = "04"Ejemplos prácticos
Estos patrones aparecen una y otra vez en proyectos reales:
- Color hexadecimal:
/^#(?:[0-9a-fA-F]{3}){1,2}$/acepta#fffy#00E5FF. - Fecha ISO:
/^\d{4}-\d{2}-\d{2}$/comprueba el formato, aunque no que el día exista. - Slug de URL:
/^[a-z0-9]+(?:-[a-z0-9]+)*$/valida textos comoguia-basica-regex. - Espacios sobrantes:
/\s{2,}/gencuentra tramos de dos o más espacios para sustituirlos por uno. - Correo aproximado:
/^[^\s@]+@[^\s@]+\.[^\s@]+$/descarta lo evidentemente incorrecto.
Cómo usar el Regex Tester de Fluxom
El Regex Tester está pensado para probar un patrón sin salir del navegador. El formato de entrada es sencillo:
- En la primera línea, escribe la expresión con barras y banderas, por ejemplo
/\d+/g. - A partir de la segunda línea, escribe o pega el texto de prueba.
- Pulsa Probar.
La herramienta devuelve una línea por coincidencia, con la posición donde empieza y el texto encontrado:
/\d+/g
Hay 12 gatos y 3 perros
@4: 12
@15: 3Si no hay coincidencias, lo dice con claridad, y si el patrón no es válido, un aviso indica qué ha fallado. Ten en cuenta que la herramienta busca siempre todas las coincidencias y no muestra el contenido de los grupos de captura.
Si no quieres escribir el patrón desde cero, la Regex Library reúne diez expresiones frecuentes (correo, URL, IPv4, teléfono, color hexadecimal, fecha ISO, slug, UUID, contraseña fuerte y etiqueta HTML). Escribe una palabra para filtrar y copia la que necesites.
Para qué se usan las regex en el día a día
Las expresiones regulares aparecen en muchos más sitios de los que parece. En el editor sirven para buscar y reemplazar de forma masiva, por ejemplo cambiar todas las fechas de 04/10/2026 a 2026-10-04. En los formularios, para detectar errores de escritura antes de enviar los datos. En el análisis de registros, para extraer direcciones IP, códigos de error o identificadores de una salida de miles de líneas. Y en la limpieza de datos, para eliminar espacios dobles, caracteres no deseados o prefijos repetidos.
Un ejemplo de reemplazo con grupos de captura en JavaScript:
"04/10/2026".replace(/(\d{2})\/(\d{2})\/(\d{4})/, "$3-$2-$1");
// "2026-10-04"La clave es pensar en la regex como un lenguaje de descripción: indicas la forma que tiene lo que buscas, no los pasos para encontrarlo.
Errores típicos y cómo evitarlos
Estos son los tropiezos más comunes al empezar:
- Olvidar escapar el punto.
/3.14/también encuentra «3x14». Escribe/3\.14/. - Codicia excesiva. Los cuantificadores intentan abarcar lo máximo. En
<b>uno</b><b>dos</b>, el patrón/<b>.*<\/b>/captura todo de golpe. Con.*?es perezoso y se detiene en la primera coincidencia. - Falta de anclas. Sin
^y$, un patrón de validación acepta cadenas que solo contienen una parte válida. - Patrones catastróficos. Expresiones con repeticiones anidadas, como
(a+)+$, pueden tardar muchísimo con ciertos textos. Si trabajas con entradas de usuarios, mantén los patrones simples. - Usar regex para todo. Analizar HTML o JSON completos con expresiones regulares es una mala idea. Para eso hay analizadores.
Practica con ejemplos pequeños, prueba cada cambio en el Regex Tester y construye los patrones por partes. Así la regex deja de parecer magia y se convierte en una herramienta más.
Prueba tu primera expresión
Escribe el patrón en la primera línea, el texto debajo y pulsa Probar para ver cada coincidencia.