La expresión de expresiones regulares puede ser un fastidio. ¡Bueno, a veces!

Aprendamos sobre las expresiones regulares y sus patrones. Vamos a examinar esos patrones que parecen una sopa enrevesada de personajes. Veremos qué significa cada carácter de una expresión regular.

Después de leer este artículo, podrá crear sus expresiones regulares y usarlas como desee. Al final, también enumeraremos algunas de las herramientas de prueba de RegEx en línea para que, según los requisitos, pueda crear su RegEx y probarla con estas herramientas.

Introducción

Expresiones regulares o como se conoce comúnmente: la expresión regular es cualquier secuencia de caracteres que se puede usar como un patrón para buscar caracteres o cadenas.

Por ejemplo, para determinar si una cadena o frase contiene la palabra "manzana"Podemos usar la expresión regular"/manzana”Para buscar dentro de la cadena. Como otro ejemplo, podemos usar "/[0-9]”Para comprobar si una cadena determinada contiene un número entre 0 y 9.

Expresiones regulares y su uso

Las expresiones regulares se utilizan ampliamente para una variedad de propósitos en las operaciones modernas relacionadas con la web. Validación de formularios web, buscadores web, analizadores léxicos en IDE, editores de texto y editores de documentos se encuentran entre algunos ejemplos en los que se utilizan con frecuencia expresiones regulares.

Todos hemos usado "CTRL + F”Muchas veces para buscar dentro de un documento o un fragmento de código para encontrar una palabra, una frase o una expresión en particular. Esta operación se puede señalar como un ejemplo muy común del uso de expresiones regulares.

Antes de continuar, echemos un vistazo a una expresión regular de uso muy común.

¿Puedes adivinar 🤔 el siguiente RegEX para qué se usa?

^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$

No se preocupe si no puede adivinarlo. Estoy muy seguro de que al final de este artículo podrá adivinarlo.

Primero comencemos con A, B, C de RegEx.

Tokens

Para empezar, veamos los distintos símbolos de la expresión regular que se muestra arriba.

^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$

Si miramos la expresión regular dada anteriormente, podemos ver que está compuesta por muchos símbolos o caracteres o tokens. Averigüemos qué significan:

Token

Sentido

^

Este token denota el comienzo de una cadena.

(...)

Esto denota un grupo donde se captura todo lo que se da dentro (…).

[...]

El [] encierra caracteres con cualquiera de los cuales puede coincidir. Por ejemplo, [abc] coincidirá con a o b o c.

Arizona

El conjunto de minúscula alfabetos de la a a la z. Debemos tener en cuenta que Regex distingue entre mayúsculas y minúsculas.

A-Z

El conjunto de mayúscula caracteres de la A a la Z.

0-9

Los dígitos del 0 al 9.

_

Esto coincidirá con el carácter _.

\

Este es el personaje de escape.

\.

Esto coincide con el carácter "." literalmente. Esto se usa porque el símbolo "." en regex es un token en sí mismo que coincide con cualquier carácter

+

Este es un cuantificador. Esto coincide con uno o más caracteres con los que se usa. Por ejemplo, un + significa una o más ocurrencias del carácter a.

\-

Esto coincidirá con el carácter "-".

@

Esto coincidirá con el carácter "@".

{}

Este es otro cuantificador. Se utiliza para denotar el número de apariciones de un personaje. Por ejemplo, un {3} significa exactamente 3 a's.

$

Esto denota el final de una cadena.

Desglose del patrón Regex dado

Ahora, armados con este conocimiento preliminar de los tokens, intentemos decodificar la expresión regular anterior:

  • <small><span style="color: #ff0000;"><span style="color: #000000;">^([a-zA-Z0-9_\-\.]+)</span></span></small> significa que estamos buscando una cadena que comience con al menos uno o más caracteres alfanuméricos en mayúscula o minúscula, guiones bajos, guiones o puntos. Por ejemplo, cualquier cosa que se parezca a nombre_usuario.01 coincidirá con el patrón. Debemos recordar que aquí no es necesario incluir todos los símbolos, solo un carácter en [a-zA-Z0-9_\-\.] lo haré
  • La opción @ coincidencias de caracteres para una sola aparición de @. Añadiendo al ejemplo anterior, algo como nombre_usuario.01 @ va a encajar.
  • ([a-zA-Z0-9_\-\.]+)  es similar al primer punto. También significa que estamos buscando una cadena que contenga al menos uno o más caracteres alfanuméricos, guiones bajos, guiones o puntos. Añadiendo al ejemplo, nombre_usuario.01@gmail encajará aquí.
  • Como ya habrá adivinado, estamos insinuando un patrón de correo electrónico. Hacia adelante, \. coincide con el sencillo "." personaje. Si continuamos con el ejemplo actual, algo como nombre_usuario.01@gmail.
  • ([a-zA-Z]{2,5})$ esto significa que la cadena debe terminar con 2 a 5 caracteres alfabéticos, ya sea en mayúsculas o minúsculas. Si agregamos .com al ejemplo anterior, podemos obtener nombre_usuario.01@gmail.com, que es el patrón común de una cadena de correo electrónico.

Combinando todo lo anterior, podemos ver que estamos buscando una cadena de identificación de correo electrónico. Ahora podemos usar esta expresión para validar cualquier correo electrónico identificación. Si nuestra identificación de correo electrónico de prueba coincide con este patrón, podemos decir que es una identificación de correo electrónico válida.

PS. - Este es un patrón para los identificadores de correo electrónico más comunes en la web.

Tipos de fichas

Se pueden usar muchos tokens en varias combinaciones dentro de una expresión regular para describir una amplia variedad de expresiones. A continuación, veremos los distintos tipos de tokens que se utilizan en expresiones regulares. Además, también veremos los tokens más utilizados en cada categoría.

Fichas básicas

Comencemos con los tokens básicos. Estos tokens se utilizan con casi todas las expresiones regulares. Por lo tanto, primero debemos aprender sobre ellos.

Token

Sentido

\r

Esto coincide con el carácter de retorno de carro.

\0

Coincide con el carácter nulo.

\n

Esto busca una nueva línea.

\t

Esto coincide con una pestaña.

Clases de personajes

Continuando, veamos las fichas de personajes. Se utilizan para hacer coincidir alfabetos, números y otros caracteres especiales.

Token

Sentido

a

Esto coincide literalmente con el personaje a. De manera similar, todos los alfabetos y números cuando se usan de forma aislada buscan el carácter específico en sí.

abecedario

Coincide con la cadena abc.

[a B C]

Esto busca un solo carácter entre a, bo c.

[^ abc]

Esto coincide con cualquier carácter excepto a o b o c.

[Arizona]

Un carácter en minúscula en el rango de la a a la z

[^ az]

Cualquier carácter que no esté en el rango de la a a la z. Esto también incluye caracteres en mayúscula.

[ARIZONA]

Un carácter en mayúscula entre A y Z.

[^ AZ]

Un personaje que no se encuentra entre la A y la Z.

[0 9-]

Cualquier número en el rango de 0 a 9

[^ 0-9]

Un carácter que no está en el rango de 0 a 9

[a-zA-Z0-9]

Esto coincide con un carácter que puede ser un carácter en minúscula entre la a y la z or cualquier carácter entre A y Z or cualquier número entre 0 y 9

[^ a-zA-Z0-9]

Cualquier personaje que no pertenezca a la categoría anterior.

.

Cualquier personaje

\s

Se utiliza para buscar cualquier carácter de espacio en blanco.

\S

Se utiliza para buscar cualquier carácter que no sea un espacio en blanco.

\d

Esto coincide con cualquier dígito

\D

Esto coincide con cualquier otro dígito

\w

Coincide con cualquier carácter de palabra

\W

Coincide con cualquier carácter que no sea una palabra

$

Esto denota el final de una cadena.

\b

Esto coincide con el límite de una palabra

\B

Esto se usa para hacer coincidir un límite que no es de palabras

Cuantificadores

Esta clase especial de tokens se utiliza para hacer coincidir el número de apariciones consecutivas de un carácter, una cadena o un número. Se utilizan junto con los demás tokens.

Veamos algunos cuantificadores comunes.

Tokens

Sentido

a?

Esto coincide con cero o una aparición de a.

a*

Esto coincide con cero o más ocurrencias (consecutivas) de a.

a+

Esto es para al menos una o más ocurrencias consecutivas de a.

un {5}

Esto busca exactamente cinco apariciones consecutivas de la letra a.

un {5,}

Esto es para al menos cinco o más ocurrencias consecutivas de a.

un {5, 7}

Esto busca cualquier número de a consecutivas entre 5 y 7.

Grupos

Estos tokens coincidirán en grupos como sugiere el nombre.

Tokens

Sentido

(...)

Esto captura todo lo que está entre paréntesis.

(a | b)

Esto coincide con a o b.

(?:…)

Coincide con todo lo que está dentro de los corchetes

(? (1) sí | no)

Esto coincide con una declaración condicional.

Banderas

Estas son instrucciones especiales que se le dan al motor de comparación de patrones mientras busca una coincidencia.

TokensSentido

g

Partido global. Esto buscará hasta que el motor de coincidencias no encuentre más coincidencias, es decir, hasta el final de la cadena o grupo de cadenas dado.

m

Coincidencia de varias líneas, es decir, línea por línea.

x

Le dice al motor que ignore los espacios en blanco al hacer coincidir.

X

Esto se utiliza para emparejamientos extendidos.

 s

Esto coincide con una sola línea.

 i

Esto se utiliza para coincidencias que no distinguen entre mayúsculas y minúsculas.

 u

Para caracteres Unicode.

anclas

Instrucciones adicionales para el motor en cuanto a posiciones.

Tokens

Sentido

^

Esto denota el comienzo de una cadena.

\A

Esto también denota el comienzo de una cadena.

\Z

La ficha del final de una cadena.

\z

El token para el final absoluto de una cadena.

 \G

Esto es para el inicio de un partido.

Expresiones regulares de uso común

Las expresiones regulares se utilizan ampliamente en Internet. Desde las validaciones de formularios hasta la búsqueda de datos que contienen una palabra clave o palabras clave en particular, las expresiones regulares son casi inseparables de las aplicaciones informáticas modernas.

Veamos algunos ejemplos familiares del uso de expresiones regulares.

Coincidencia de un número de teléfono

Veamos cuál es el patrón de un número de teléfono utilizado en India. El código de país es lo primero. Por lo general, contiene un carácter "+" seguido del número 91, que es el código de país de la India. Además, los números de teléfono de la India generalmente comienzan con 6, 7, 8 o 9. A continuación, le siguen otros 9 dígitos.

Entonces, una expresión regular válida para un número de teléfono celular indio sería la dada.

^(\+91[\-\s]?)?[0]?(91)?[6-9]\d{9}$

Probando la fuerza de las contraseñas

La mayoría de los sitios web nos recomiendan proporcionar una sólida la contraseña que contiene una combinación de números, caracteres en mayúsculas y minúsculas y símbolos. Además, debe haber un número mínimo de caracteres: 6 u 8. Esto se hace para que la contraseña sea muy difícil de descifrar.

Cualquier contraseña que siga esta regla se puede generar o validar para la seguridad de la contraseña utilizando una expresión regular.

^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{6,})

Coincidencia de URL

Las URL son la forma más común de utilizar Internet y visitar rápidamente la página web que queremos. Casi todos los sitios web tienen una URL. Por lo tanto, cada URL está estandarizada y sigue un patrón definido. Cada URL sigue el protocolo HTTP o HTTPs seguido de ": //"Y el"www" a menudo. Luego, el nombre del sitio web seguido de .com o .net u .org, etc.

Para probar la validez de una URL, podemos usar una expresión regular como la que se muestra a continuación.

https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)

Formatos de fecha y hora

Los formatos de fecha y hora también se utilizan con mucha frecuencia en la web. Hay muchos formatos de fechas utilizados por una variedad de aplicaciones, software o sistemas. Las fechas siempre deben usarse en un formato que las haga utilizables para el usuario o la aplicación que intenta leerlas.

Una fecha en el formato dd-MM-aaaa se puede validar utilizando una expresión regular que puede ser como se indica a continuación.

^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$

Ahora, exploremos algunos de los herramientas de expresiones regulares en línea que puede ser útil para construir y solucionar problemas.

Si desea obtener más información sobre las expresiones regulares, sus ejemplos y usos avanzados, aquí hay una lista de sitios web a los que siempre puede consultar:

Regex101

RegEx101

Regex101 es una excelente guía de referencia y una herramienta interactiva para crear sus expresiones regulares, puede ayudarlo a comenzar con expresiones regulares muy rápidamente.

Con esto, podemos probar RegEx para los siguientes idiomas.

  • PCR (PHP)
  • ECMAScript (JavaScript)
  • Python
  • GoLang

Proporciona soporte para las funcionalidades de RegEx como una coincidencia, sustitución y pruebas unitarias. Aparte de esto, se puede guardar la antigua expresión regular probada.

FreeFormatter

Probador de expresiones regulares FreeFormater

Formateador libre está basado en JavaScript y utiliza la Biblioteca XRegExp para funciones mejoradas. Facilita probar una expresión regular frente a una coincidencia, así como reemplazar una coincidencia. Admite las siguientes marcas, que se pueden utilizar según el requisito al probar una expresión regular

  • i - No distingue entre mayúsculas y minúsculas
  • m - Multilínea
  • g - Global (no te detengas en el primer partido)
  • s - El punto coincide con todos INCLUYENDO los saltos de línea (solo XRegExp).

Regex Crossword

RegExCrosswood

Si Regex y acertijos le interesan, este es el web oficial ir a. Tiene una serie de divertidos e interactivos rompecabezas. Definitivamente te ayudarán a aprender más sobre las expresiones regulares.

  • Optimizado para teléfonos y para resolver acertijos de RegEx sobre la marcha.
  • Un tutorial paso a paso, que le enseña los diferentes símbolos y patrones RegEx.
  • Inclina tu mente alrededor de los rompecabezas cubistas de RegEx de palíndromos 2D.
  • Amplia gama de acertijos de RegEx con dificultades desde principiantes hasta expertos.

RegExr

RegExr

RegExr es un sitio web para ensuciarse las manos con Regex. Puede escribir expresiones regulares, hacer coincidir patrones y divertirse con este equivalente de Codepen para expresiones regulares.

Caracteristicas

  • Soporta JavaScript y PHP / PCRE RegEx.
  • Los resultados se actualizan en tiempo real a medida que escribe.
  • Pase el cursor sobre una coincidencia o expresión para obtener más detalles.
  • Valide patrones con conjuntos de pruebas.
  • Guarde y comparta expresiones con otros.
  • Referencia completa de expresiones regulares con ayuda y ejemplos.

Pythex

Es un probador de expresiones regulares basado en Python. Pythex es una forma rápida de probar sus expresiones regulares de Python. Viene con cuatro banderas a saber

  • Ignorar caso
  • Multilínea
  • DotAll
  • Verboso

Rubular

rubular

rubular es un editor de expresiones regulares basado en Ruby. Es compatible y utiliza el Ruby 2.5.7 versión en adelante.

Debuggex

Debuggex

Está basado en JavaScript y admite RegEx para Python y expresiones regulares compatibles con Perl (PCRE). Usando esto herramienta en línea podemos incrustar nuestra expresión regular en StackOverflow. Proporciona la posibilidad de compartir el resultado de la expresión regular mediante la creación de un vínculo único con cada prueba de expresión regular.

ExtendsClass

Extiende la clase

ExtendsClass es una caja de herramientas para desarrolladores. Proporciona soporte para pruebas de RegEx para los siguientes idiomas.

  • JavaScript
  • Pitón (3.4)
  • Ruby (2.1)
  • Java (JDK14)
  • PHP (7)

RegEx Tester

probador RegEx

Esta probador de expresiones regulares gratis le permite probar sus expresiones regulares con cualquier entrada de su elección y resalta claramente todas las coincidencias. Con esto, podemos guardar la antigua expresión regular probada para referencia futura. Además, es compatible con JavaScript y PCRE RegEx.

Web ToolKit

WebToolKitOnline RegExTester

Kit de herramientas web contiene un conjunto de herramientas de utilidad, RegEx Tester es una de ellas. Podemos ingresar nuestra RegEx aquí y probarla con un valor. También proporciona una función para reemplazar, comparar y copiar las expresiones. Aparte de esto, proporciona un interruptor para realizar una coincidencia global y sensible a mayúsculas y minúsculas.

Recursos para el Aprendizaje

Si desea aprender RegEx, estos son algunos de los mejores cursos disponibles en línea.

Coursera

Coursera ofrece interesantes cursos de proyectos guiados que le brindarán experiencia práctica en el uso de RegEx. La mayoría de estos cursos de proyectos duran aproximadamente una hora y trabajará paso a paso junto con el instructor. Estos son algunos de los mejores proyectos de RegEx.

Udemy

Udemy ofrece un Curso completo de RegEx para principiantes que te enseña los conceptos básicos en 3.5 horas y un Curso Python RegEx con proyectos que le brindará experiencia práctica en el uso de RegEx para la validación de entrada, el procesamiento de datos y la transformación.

Conclusión

Aprendimos las expresiones regulares, algunos ejemplos comunes y algunos de los herramientas de prueba. Con este conocimiento, podemos crear nuestras expresiones regulares y usarlas en nuestras aplicaciones.