Accede a todo EDteam con un único pago¡Sube a premium!

¿Qué son las expresiones regulares?

Las expresiones regulares sirven para validaciones como las de correo electrónico, URLs, números de teléfono, contraseñas, etc. En este post te enseño como funcionan, además tendrás un ejemplo que te ayudará a escribir tu primera expresión regular.

Diseño web
8 minutos
Hace 4 años
¿Qué son las expresiones regulares?

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")

Comentarios de los usuarios

Pregunta a ChatEDT