Chuleta de expresiones regulares (regex)
Una biblioteca con buscador de expresiones regulares probadas para tareas cotidianas, desde validar emails y direcciones IP hasta extraer hashtags y URL. Cada patrón tiene su propio cuadro de prueba que resalta las coincidencias en vivo, además de una referencia rápida de sintaxis.
Última actualización:
Los patrones de validación usan el flag m para que puedas probar un valor por línea; quítalo para validar una sola cadena. Las coincidencias se resaltan en vivo mientras editas el texto de prueba.
Referencia rápida de sintaxis regex
| Token | Significado | Ejemplo |
|---|
Cómo usar Chuleta de expresiones regulares (regex)
- Busca lo que necesitas, como email, fecha o ipv4, o elige una pestaña de categoría.
- Lee la descripción para ver qué acepta el patrón y dónde están sus límites.
- Edita el texto de prueba de la tarjeta. Las coincidencias se resaltan mientras escribes y el recuento se actualiza; pulsa Probar para volver a ejecutarlo.
- Copia la regex como literal de JavaScript o como patrón sin más para otros lenguajes.
- Consulta la referencia de sintaxis al final cuando quieras adaptar un patrón, y descarga la chuleta para usarla sin conexión.
Flags de regex explicados
| Flag | Nombre | Efecto | Ejemplo |
|---|---|---|---|
g | global | Encuentra todas las coincidencias en lugar de detenerse en la primera | "a1b2".match(/\d/g) → ["1", "2"] |
i | ignore case | Las letras coinciden sin importar mayúsculas o minúsculas | /hello/i coincide con "HeLLo" |
m | multiline | ^ y $ coinciden en cada salto de línea | /^\d+$/m comprueba cada línea |
s | dotAll | . también coincide con saltos de línea | /a.b/s coincide con "a\nb" |
u | unicode | Trata los pares sustitutos como un solo carácter y habilita \p{…} | /\p{L}+/u coincide con "Zürich" |
y | sticky | Solo coincide en lastIndex, útil para tokenizadores | /\d/y |
d | indices | Añade al resultado las posiciones de inicio y fin de cada grupo | /(a)/d.exec("ba").indices |
v | unicodeSets | Modo u mejorado con operaciones de conjuntos en las clases | /[\p{L}--[a-z]]/v |
Codicioso vs perezoso: un ejemplo práctico
Dado el texto <b>bold</b> and <i>italic</i>:
/<.+>/es codicioso:.+avanza hasta el final de la cadena y luego retrocede hasta el último>, así que la única coincidencia es el texto completo, 30 caracteres./<.+?>/ges perezoso:.+?se detiene en el primer>, lo que da cuatro coincidencias:<b>,</b>,<i>,</i>./<[^>]+>/gda las mismas cuatro coincidencias sin retroceso, porque la clase negada nunca puede pasar de un>. Las clases negadas suelen ser la opción más rápida y clara.
Cómo usar estos patrones en código
| Lenguaje | Validar una cadena completa | Encontrar todas las coincidencias |
|---|---|---|
| JavaScript | /^\d{5}$/.test(zip) | [...text.matchAll(/#\w+/g)] |
| Python | re.fullmatch(r"\d{5}", zip) | re.findall(r"#\w+", text) |
| PHP | preg_match('/^\d{5}$/', $zip) | preg_match_all('/#\w+/', $text, $m) |
| Java | zip.matches("\\d{5}") | Pattern.compile("#\\w+").matcher(text) |
| C# | Regex.IsMatch(zip, @"^\d{5}$") | Regex.Matches(text, @"#\w+") |
| Go | regexp.MustCompile(`^\d{5}$`).MatchString(zip) | re.FindAllString(text, -1) |
Consejo: en los lenguajes donde los patrones se escriben como cadenas normales (Java, C++), hay que duplicar cada barra invertida. Las cadenas sin procesar (r"…" en Python, @"…" en C#, acentos graves en Go) lo evitan.
Preguntas frecuentes
¿Estos patrones regex funcionan fuera de JavaScript?
La mayoría sí. Los patrones usan una sintaxis ampliamente compatible que también funciona en Python, Java, C#, PHP (PCRE) y Go con pequeños cambios. Los lookbehinds como (?<!\w) no son compatibles con el motor RE2 de Go, y \p{Extended_Pictographic} necesita un motor compatible con Unicode. Quita las barras y los flags cuando uses el patrón sin más.
¿Cuál es la mejor regex para direcciones de email?
No existe una perfecta; la gramática completa de RFC 5322 es demasiado compleja para una regex práctica. El patrón de aquí acepta direcciones normales y rechaza errores evidentes como la falta de @ o un dominio sin punto. Para asegurarte de que una dirección existe, envía un email de confirmación.
¿Por qué los patrones de validación usan el flag m?
Para que cada línea del cuadro de prueba se compruebe como un valor independiente. Con el flag m, ^ y $ coinciden al inicio y al final de cada línea. Cuando valides un solo campo de entrada en tu código, quita el flag m para que tenga que coincidir toda la cadena.
¿Puede una regex validar fechas por completo?
Solo en parte. Los patrones de fecha comprueban el formato y los rangos de meses y días, pero no la duración de los meses ni los años bisiestos, así que 2026-02-30 sigue pasando. Analiza la fecha en código después de la comprobación con regex.
¿Qué es el backtracking catastrófico?
Algunos patrones con cuantificadores anidados, como (a+)+, pueden tardar un tiempo exponencial con ciertas entradas que no coinciden, congelando una página o un servidor (un ReDoS). Los patrones de esta página evitan el anidamiento ambiguo, pero prueba siempre los patrones propios con cadenas largas que casi coinciden.
¿Se envía mi texto de prueba a algún sitio?
No. Toda la búsqueda de coincidencias se ejecuta en tu navegador con el motor RegExp integrado de JavaScript. No se sube nada de lo que escribes.
¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?
Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.