Por qué vale la pena aprender Regex
Una expresión regular bien diseñada puede reemplazar 50 líneas de código de análisis manual de cadenas. Se ejecuta en microsegundos. Funciona en prácticamente todos los lenguajes de programación. Y una vez que comprenda la sintaxis, podrá escribir patrones que llevarían horas implementar con lógica condicional.
La barrera no son los conceptos, es la notación. Regex utiliza una sintaxis densa y con muchos símbolos que parece un galimatías a primera vista. Una vez que aprenda a leerlo, verá patrones en el código, los datos y el texto que antes no podía ver.
Referencia rápida de patrones esenciales
| Patrón | Partidos | Ejemplo |
|---|---|---|
\d | Cualquier dígito del 0 al 9 | \d{4} → 2025 |
\w | Letra, dígito o guión bajo | \w+→ "hola_mundo" |
\s | Cualquier espacio en blanco | \s+→ uno o más espacios |
^ / $ | Inicio/fin de cadena | ^\d{5}$→ exactamente 5 dígitos zip |
[abecedario] | Cualquiera de: a, b o c | [aeiou]→ cualquier vocal |
[^abc] | Cualquier cosa excepto a, b, c | [^\d]→ sin dígitos |
? | 0 o 1 del anterior | color→ color O color |
+ | 1 o más | \d+→ uno o más dígitos |
* | 0 o más | \d*→ cero o más dígitos |
{Nuevo Méjico} | Entre n y m veces | \d{3,5}→ 3 a 5 dígitos |
Patrones que vale la pena marcar
- Correo electrónico:
/^[\w.+-]+@[\w-]+\.[a-z]{2,}$/i - Extracción de URL:
/https?:\/\/[^\s"'<>]+/g - Eliminar espacios en blanco adicionales:
/\s+/g→ reemplazar con un solo espacio - Hashtags adicionales:
/#[\w]+/g - Coincidir sólo con la palabra completa:
/\bpalabra\b/
gramobandera para buscar todas las coincidencias (no solo la primera),ipara coincidencias que no distinguen entre mayúsculas y minúsculas, ymetrohacer^y$haga coincidir los límites de las líneas en lugar de los límites de las cadenas. La mayoría de los patrones de expresiones regulares del mundo real necesitan al menosgramooi.¿Qué es un "retroceso catastrófico"?
Patrones como(un+)+aplicado a una cadena larga que no coincide provoca un tiempo de procesamiento exponencial: su motor de expresiones regulares se atasca al intentar exponencialmente más combinaciones. Evite cuantificadores anidados en patrones superpuestos. el patrón(a+)+ben "aaaaaaaaaaaaaaac" se colgará un servidor.
¿Las expresiones regulares de JavaScript funcionan igual que Python?
Mayormente sí, con diferencias en los grupos con nombres (JS usa(?<nombre>), Python EE.UU.(?P<nombre>)), algunas capacidades de búsqueda hacia adelante y hacia atrás y notación de clases de caracteres. This tester uses JavaScript's engine — test in your target language if behavior differs.