¿Qué es una expresión regular?

Básicamente, una expresión regular es un patrón que describe una cierta cantidad de texto. Por ejemplo, normalmente los emails son:

usuario@dominio.extensión

Si queremos describir el patrón de un email, podemos decir algo como esto: empezar con un nombre de usuario (una combinación de letras y números), seguido del símbolo “arroba”@, seguido del dominio (otra combinación de letras y números) seguido de la extensión (que empieza con un punto (.) seguido de una combinación de solo letras)

El proceso de describir el patrón de un email, es el mismo proceso que seguirás cuando crees una expresión regular. La única diferencia será la sintaxis.

¿Por qué utilizar Regex?

Los principales lenguajes de programación utilizan expresiones regulares (C++, PHP, .NET, Java, JavaScript, Python, Ruby, y muchos otros). Como desarrollador web siempre debes trabajar con strings para validar los datos introducidos por el usuario, los formatos URL, para reemplazar palabras en párrafos, etc. Estos son los principales usos de las expresiones regulares:

  • Buscar elementos particulares dentro de un texto largo. Eg. Puedes identificar todos las direcciones de correo en algún contenido utilizando un editor de texto.
  • Reemplazar

    MocasinesEncuentra En Complementos Línea Zapatos Ofertas Y 3lTF1cJK

    elementos particulares. eg. Puedes limpiar algún HTML mal  formateado  reemplazando todas las etiquetas en mayúsculas con las minúsculas equivalentes en un editor de texto.
  • Validar una entrada. eg. Puedes chequear que una contraseña cumple con ciertos criterios como, una mezcla de mayúsculas y minúsculas, dígitos y puntuación, etc, en un programa que estás escribiendo.
  • Coordinar acciones. eg. Puedes procesar ciertos archivos en un directorio, pero sólo si reúnen condiciones particulares, en el trabajo que estás haciendo en la línea de comandos.
  • Reformatear texto. eg. Puedes exportar datos de un programa como un archivo de texto y luego modificar su diseño para poder importarlo en otro programa usando un editor de texto.
  • Y más…
MocasinesEncuentra En Complementos Línea Zapatos Ofertas Y 3lTF1cJK

Construyendo y probando expresiones regulares

Nunca empieces creando una regex sin tener una herramienta de prueba en vivo, se puede volver muy complicado fácilmente. La mejor manera es usando la estrategia de dividir y conquistar (otra vez), divide tu regex en varias regex pequeñas y luego las combinas todas.

El patrón de sintaxis

Esta es una expresión regular que comprueba un patrón de correo electrónico:

/[\w._%+-][email protected][\w.-]+\.[a-zA-Z]{2,4}/

Pero no te preocupes, no tienes que entenderlo ahora. La buena noticia es que una expresión regular compleja es la combinación de muchas expresiones regulares sencillas. ¡Dividir y conquistar!

Así que… empecemos con las expresiones regulares básicas usando las operaciones más básicas:

Un caracter simples es…

Cualquier sucesión de caracteres es una expresión regular simple, si coloco la palabra “email” como una expresión regular, el sistema buscará por cualquier repetición de la palabra “email” en el texto.

Utilizar el contenedor a la derecha para jugar con otras sucesiones simples de caracteres.

El Caracter. 

El caracter . representa…

Cualquier caracter o símbolo disponible, si dices ab.ve estás diciendo que cualquier cosa que comience con anMocasinesEncuentra En Complementos Línea Zapatos Ofertas Y 3lTF1cJK y termine con ve

Puedes utilizar . todas las veces que quieras, la expresión regular reemplazará el . con cualquier caracter tantas veces como . aparezca.

Utiliza el contenedor a la derecha para jugar con otras simples sucesiones de caracteres.

Leonardo Iachini 2018 Otoño Zapatos De Cordones Mujeres n0wOkX8P

El caracter de rango [ ] MocasinesEncuentra En Complementos Línea Zapatos Ofertas Y 3lTF1cJK

El caracter [ ]  representa…

Un grupo de posibles caracteres, a veces nos gustaría ser un poco más específicos, ahí es cuando los rangos se vuelven útiles. Especificamos un rango de caracteres encerrados dentro de corchetes ( [ ] ).

También puedes utilizar los[ ] para marcar números o letras con un guión entre ellos. El guión representa un rango de números y caracteres. E.g:

MujerAmazon Y esZapatos Complementos Botas Para Cotswold zpUSMqV
  1. [0-9] representa cualquier número entre 0 y 9.
  2. [a-z] representa cualquier letra en minúsculas.
  3. [A-Z] representa cualquier letra en mayúsculas.

También puedes combinar rangos de caracteres como:

  1. Cualquier letra en mayúscula o minúsculas:[a-zA-Z]Bajas Unisex 106 Bikkembergs Blanco Deportivas Soccer Size38 cTFKJl13
  2. Números desde 1 hasta 5 y también 9:[1-59]
  3. Números desde 1 hasta 5, letras desde a hasta f y también de capital X:[1-5a-fX]

El ^ (signo de intercalación) caracter: negación o comienzo de un término

Si ponemos ^ en el principio de un [rango]…

Estamos negando el rango, por ejemplo:

  1. Todos los términos que comienzan con li y terminan con e pero no tienen i o v dentro: li[^v]e

Si ponemos ^ al principio de una expresión regular…MocasinesEncuentra En Complementos Línea Zapatos Ofertas Y 3lTF1cJK

Estamos diciendo que solo queremos probar el regex desde el principio de la cadena, sin subcadenas (pequeñas partes de cadenas) pueden ser probadas:MocasinesEncuentra En Complementos Línea Zapatos Ofertas Y 3lTF1cJK

  1. Una cadena que empieza con http: ^http

Accesos directos por dígitos d y palabras w

Si lo prefieres, puedes utilizar estos accesos directos en tus expresiones regulares:

esZapatos Amazon Mujer MesesY Últimos Tres Callaghan edBoxCMocasinesEncuentra En Complementos Línea Zapatos Ofertas Y 3lTF1cJK
Operator Description
w Coincide con cualquier carácter de palabra (igual a[a-zA-Z0-9_])
W Coincide con cualquier cosa que no sea una letra, dígito o guión bajo.
d Corresponde cualquier dígito decimal.Equivalente a[0-9].
D Corresponde cualquier otro menos un dígito decimal.

Agrupar o encerrar expresiones regulares con

Siempre hablamos sobre “dividir y conquistar” cierto? Bueno, tu mejor amigo para esto serán los operadores de paréntesis ( ). Ahora somos capaces de agrupar cualquier patrón como hacemos en matemáticas.

Ahora podemos agrupar, podemos multiplicar (repetir) nuestros patrones, negar nuestors patrones, etc.

Por ejemplo, este regex acepta una o varias repeticiones de la cadena ab seguida de una letra c al final:(ab)*c

We always talk about “divide an conquer” right? Well, you best friend for that will be the parenthesis operator ( ). We are now able to group any pattern like we do it in math.

Now that we can group, we can multiply (repeat) our patterns, negate our patterns, etc.

For example, this regex accepts one or many a repetitions of the ab string followed by a c letter at the end:

Usando cuantificadores en las expresiones regulares

Algunas veces no quieres especificar el número de caracteres que un regex puede tener: por ejemplo, un nombre de dominio puede tener entre 1 y quizá 100 caracteres .. quién sabe?

El cuantificador nos permite aumentar el número de veces que un caracter puede ocurrir en nuestra expresión regular. Aquí está el conjunto básico de multiplicadores:

  • * – caracter ocurre cero o más veces.
  • + -caracter ocurre una o más veces.
  • ? -caracter ocurre cero o una vez.
  • {5} -caracter ocurre cinco veces.
  • {3,7} -caracter ocurre entre 3 a 7 veces.
  • {2,} -caracter ocurre al menos dos veces.

Usando el cuantificador* + ?

Podemos colocar el cuantificador después de el patrón de caracteres que queremos repetir, aquí hay algunos casos y ejemplos:

Operator Description
+ Una o muchas

Ejemplo: Términos que empiezan con la letra  o al menos una vezBajo Mujer Und Kennel Schmenger Tobillo Schuhmanufakturracer K1cFJl; o+

* Cero or muchas

Ejemplo: Términos que empiezan con la letra a (minúscula) seguida de cero or muchos caracteres de cualquier tipo pero que sean siempre con una espacio en blanco: a[^ ]*

? Cero o una

Ejemplo: Buscando la cadena de noviembre con o sin el acceso directo: [nN]ov(ember)?

MocasinesEncuentra En Complementos Línea Zapatos Ofertas Y 3lTF1cJK
MocasinesEncuentra En Complementos Línea Zapatos Ofertas Y 3lTF1cJK

Aquí hay dos increíbles herramientas para crear y probar expresiones regulares:
https://regex101.com/ and http://regexr.com/

Aquí hay un tutorial interactivo para aprender expresiones regulares:
https://regexone.com/

2e3e Padders Gancho Y Lazo Azul Marinoazul39 Piano Plano Mujer Zapato qUjLzVGSMp

Algunas expresiones regulares muy útiles

Vamos a aceptarlo, las expresiones regulares son algo que usarás de vez en cuando (a menos que te especialices en un área muy particular en el mundo del desarrollo web). La sintaxis es fácil de olvidar y probablemente busques los regex en el internet la mayoría del tiempo.Lo importante es que los entiendas y que seas capaz de jugar con ellos cada vez que lo necesites.

Aquí hay algunos ejemplos de regex pre-hechos:

Expresiones regulares para: validar un correo

Comenzamos diciendo que el analizador para encontrar el principio de la cadena (^). Dentro del primer grupo, coinciden una o más letras minúsculas, números, guiones bajos, puntos, o guiones. I have escaped the dot because a non-escaped dot means any character. Inmediatamente después de eso, debe haber un signo. Después viene el nombre del dominio que debería ser: una o más letras minúsculas, números, guines bajos, puntos, o guiones. Entonces otro punto (escapado), con la extensión de dos a seis letras o puntos.Tengo 2 a 6 debido a los TLD específicos del país (.ny.us or .co.uk). Finalmente, queremos el final de la cadena ($).

Expresiones regulares para hacer coincidir una URL

4 Zapatillas Soft Mujer Donna Online¡compara De Deportivas EbYWIeHD29

Este regex es como tomar la parte final del regex anterior, golpeándolo entre “http: //” y alguna estructura de archivos al final. Suena mucho más sencillo de lo que realmente es. Para empezar, buscamos el comienzo de la línea con el cursor.

El primer grupo de captura es toda la opción. Permite que la URL comience con “http: //”, “https: //”, o con ninguno de ellos. Tengo un signo de interrogación después de la s para permitir que las URL tengan http o https. Con el fin de hacer todo este grupo opcional, añade un signo de interrogación al final de la misma.

A continuación está el nombre del dominio: uno o más números, letras, puntos o guiones seguido de otro punto luego de dos a seis letras o puntos. La siguiente sección son los archivos y directorios opcionales. Dentro del grupo, queremos igualar cualquier número de barras diagonales, letras, números, guiones bajos, espacios, puntos o guiones. Entonces decimos que este grupo puede ser igualado tantas veces como queramos. Esto permite bastante múltiples directorios para ser emparejados junto con un archivo al final. He utilizado la estrella en lugar del signo de interrogación porque la estrella indica cero o más, no cero o uno. Si utilizábamos un signo de interrogación allí, sólo se podría hacer coincidir un archivo/directorio.

A continuación, una barra inclinada se empareja, pero puede ser opcional. Finalmente terminamos con el final de la línea.