• ¡Obtenga la seguridad de la aplicación de la manera correcta! Detectar, proteger, monitorear, acelerar y más ...
  • 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é
    • El patrón de @ coincidencias de caracteres para una sola aparición de @. Añadiendo al ejemplo anterior, algo como [correo electrónico protegido] 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, [correo electrónico protegido] 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 [correo electrónico protegido]
    • ([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 [correo electrónico protegido], 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 ID de correo electrónico. 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.

    Tokens Sentido

    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\.)?[[email protected]:%._\+~#=]{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.

    • PCRE (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

    FreeFormatter 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 Crucigrama

    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

    Extendsclass

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

    • JavaScript
    • Python (3.4)
    • Ruby (2.1)
    • Java (JDK 14)
    • PHP (7)

    Probador de expresiones regulares

    RegExTester

    Este patrón de 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.

    Kit de herramientas web

    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.

    Conclusión

    Aprendimos las expresiones regulares, algunos ejemplos comunes y algunas de las herramientas de prueba en línea. Con este conocimiento, podemos crear nuestro expresiones regulares y utilizarlos en nuestras aplicaciones.