Las expresiones regulares te permiten filtrar textos, para encontrar coincidencias, comprobar la validez de fechas, documentos, contraseñas, reemplazar texto y demás. El problema es que no son intuitivas a primera vista, lo importante para empezar es conocer la sintaxis (el orden de como hacer).
Antes de empezar con la sintaxis, te recomiendo usar la esta herramienta: https://regex101.com/
Sintaxis
Alternación
Es una barra vertical que separa alternativas, por ejemplo:
1 2Con esto filtraremos `alvaro` y `alexys` dentro de un texto: [**Ver Ejemplo**](https://regex101.com/r/2AVOq1/2/) 3 4[](https://edteam-media.s3.amazonaws.com/blogs/original/8ffe064b-3c83-4b2b-9339-2e75bdbe7752.png) 5 6### Cuantificación 7 8Este nos ayuda a filtrar ciertas frecuencias entre los más importantes tenemos: 9 10| Cuantificador | Que podemos filtrar | Ejemplo | 11| :-----------: | :-----------------------------: | ------------------------------------------------ | 12| ? | algo que es opcional | [Ejemplo ?](https://regex101.com/r/2AVOq1/3) | 13| + | algo que puede tener uno o más | [Ejemplo +](https://regex101.com/r/2AVOq1/4) | 14| * | algo que puede tener cero o más | [Ejemplo *](https://regex101.com/r/2AVOq1/5) | 15| a{n} | algo que tenga exactamente "n" | [Ejemplo {n}](https://regex101.com/r/2AVOq1/6) | 16| a{n,} | algo que tenga "n" o más | [Ejemplo {n,}](https://regex101.com/r/2AVOq1/7) | 17| a{n,m} | algo que tenga entre "n" o "m" | [Ejemplo {n,m}](https://regex101.com/r/2AVOq1/8) | 18 19En la siguiente imagen usamos el cuantificador `*`, que filtra la palabra "hola" en la que puede tener ninguna ó muchas "o" 20 21![](https://edteam-media.s3.amazonaws.com/blogs/original/4659226a-17a3-4d10-9817-a4ebf7993ca9.png) 22 23### Agrupación 24 25La agrupación es lo más utilizado en las expresiones regulares, nos permite agrupar reglas y combinarlas por ejemplo: [https://regex101.com/r/2AVOq1/9](https://regex101.com/r/2AVOq1/9) 26 27![](https://edteam-media.s3.amazonaws.com/blogs/original/73530325-7287-4c3f-9c63-4067085a1dab.png) 28 29### Banderas 30 31Las banderas nos permiten indicar, el impacto de la regla, entre las más importantes tenemos: 32 33| Bandera | Efecto | 34| :-----: | :-------------------------------------------------: | 35| g | de forma global | 36| m | multilinea | 37| i | insensitivo, no importa las mayúsculas o minúsculas | 38 39Estas se pueden combinar sin problemas por ejemplo: en la siguiente regla le indicamos que filtre de forma `g` global `m` multilinea y `i` insensitivo sin que afecte las mayúsculas o minúsculas. 40 41[https://regex101.com/r/2AVOq1/10](https://regex101.com/r/2AVOq1/10) 42 43![](https://edteam-media.s3.amazonaws.com/blogs/original/2645b19a-e5ba-4748-8060-8ff514c3323e.png) 44 45### Otros elementos importantes 46 47En las expresiones regulares tenemos muchas más reglas que podemos usar: 48 49| Elemento | Filtra | 50| :------: | :----------------------------------------------------------: | 51| . | cualquier caracter | 52| ! | negación | 53| \ | caracteres especiales (`\n, \t, \w`) | 54| [] | clase de caracteres (`[a-z]`) | 55| ^ | Inicio de texto (`^hola`) ó negar una clase de carácter (`[^a-z]`) | 56| $ | Final de un texto (`^hola$`) | 57 58## Filtrar un Correo Electrónico 59 60Generalmente las expresiones regulares nos ayudan a filtrar muchas cosas, por ejemplo para la validación de textos especiales, como un correo electrónico válido. 61 62Debemos evitar lo siguiente: 63 64- Los puntos al principio, antes del arroba y final del correo `.hola.@gmail.com`. 65- Un espacio al principio o al medio de un correo `hola @gmail.com` 66 67### Pasos: 68 69- Iniciamos especificando un inicio y un final 70 71 ~~~^()$~~~ 72 73- Validamos el punto al principio `?!\.` indica que no puede haber un punto al principio 74 75 ~~~^((?!\.))$~~~ 76 77- Ahora seguimos con las reglas, aceptar cualquier texto (`\w`) con `-` ,`_` y `.` ( `*` se olviden del cuantificador puede haber nada o mucho texto) 78 79 ~~~^((?!\.)[\w-_.]*)$~~~ 80 81- Validamos que no haya un punto antes del `@`, lo hacemos con una clase de caracteres `[]` y lo negamos con `[^\.]` 82 83 ~~~^((?!\.)[\w-_.]*[^.])$~~~ 84 85- Ahora ponemos el `@` y que tenga cualquier texto (`\w+`) el cuantificador `+` puede haber una letra o muchas 86 87 ~~~^((?!\.)[\w-_.]*[^.](@\w+))$~~~ 88 89- Casi terminando validaremos `gmail.com`, `ed.team` y subdominios especiales al final. 90 91 ~~~^((?!\.)[\w-_.]*[^.](@\w+)(\.\w+(\.\w+)))$~~~ 92 93- Finalmente evitar un `.` al final, por ejemplo: `contacto@ed.team.`, de igual forma podemos usar una clase de caracteres `[]`, negaremos el `.`, `[^.]` y para no tener problemas agregaremos `\W`, este carácter especial indica que no debería haber espacios al final. 94 95 ~~~^((?!\.)[\w-_.]*[^.](@\w+)(\.\w+(\.\w+)?[^.\W]))$~~~ 96 97 [EL RESULTADO FINAL](https://regex101.com/r/SOgUIV/1) 98 99![](https://edteam-media.s3.amazonaws.com/blogs/original/3043302f-c9dd-4208-8f39-f0284129931f.png) 100 101Y con esto nuestra expresión regular esta lista para usarse. 102 103Espero que este artículo te haya ayudado a comprender las expresiones regulares. Ahora te toca practicar, te dejo esta infografía con las expresiones regulares básicas que debes conocer. Nos vemos en un siguiente artículo 👋. 104 105![](https://edteam-media.s3.amazonaws.com/blogs/original/199294d4-4abc-41f2-b624-5d115b0584f6.png) 106 107#NoTeDetengas y continúa aprendiendo más del mundo de la programación con esta especialidad de 8 cursos 📚 [https://ed.team/programacion](https://ed.team/programacion). El primer curso es ¡GRATIS 🎁! 108 109Aprenderás algoritmos, paradigmas de programación, patrones de diseño y mucho más. 110 111[![Especialidad: Programación Desde Cero](https://edteam-media.s3.amazonaws.com/specialities/original/6804abfc-5cc0-4199-a162-173e451d34df.png)](https://ed.team/especialidades/programacion "Especialidad: Programación Desde Cero")