Cómo hacer un Sitio Web o Blog en 2022 - Guía fácil y Gratuita para Crear un Sitio Web

Guía para principiantes sobre expresiones regulares (Regex)

Una expresión regular es un conjunto de caracteres que forman un patrón que se puede buscar en una cadena. Las expresiones regulares se pueden utilizar para validación como validar números de tarjetas de crédito, por ejemplo buscar es decir, a través de coincidencias de texto complejas, y para reemplazando texto coincidente con otra cuerda. También tiene un excelente soporte para múltiples idiomas: apréndalo una vez y podrá usarlo en muchos lenguajes de programación.

He visto a pocas personas echar un primer vistazo a las expresiones regulares e ignorarlas por completo. No los culpo; La sintaxis de regex es compleja y hará que muchos se estremezcan al igual que esos lenguajes de línea de comandos, solo que peores. Pero cada cosa nueva da miedo y al principio parece imposible de aprender. Entonces, tomando prestadas las palabras de Horacio, diré esto; .

Regex: una introducción

Regex tuvo sus raíces en neurociencia y matemáticas y sólo fue implementado en la programación en 1968 por Ken Thompson en el editor de texto QED para búsqueda de texto. Ahora forma parte de muchos lenguajes de programación como Perl, Java, Python, Ruby y JavaScript.

Veamos algunos ejemplos de cómo funcionan las expresiones regulares.

Usaré JavaScript en mis ejemplos. Ahora, para pasar el nivel principiante, necesitas aprender todos los caracteres, clases, cuantificadores, modificadores y métodos utilizado en expresiones regulares. Aquí hay un enlace a Página de expresión regular de Mozilla Developer Network donde puede ver una tabla que contiene todos ellos. También puedes consultar la hoja de referencia al final de esta publicación con los caracteres más utilizados.

Veamos un ejemplo sencillo con una explicación. Esta es una expresión regular.

Esto es lo que la expresión regular anterior buscará en una línea, un carácter ‘B’ seguido de al menos uno de cualquier carácter entre (e incluyendo) ‘a’ a ‘z’, ‘A’ a ‘Z’ y números del 0 al 9.

Aquí hay una muestra de coincidencias en una línea resaltada:

La expresión regular anterior detendrá la búsqueda en y devolverá una respuesta positiva. Eso es porque se debe especificar el modificador global ‘g’ si desea que la expresión regular busque todas las coincidencias posibles.

Ahora, veamos cómo usar esta expresión en JavaScript. El método de prueba es el siguiente: si se encuentra una coincidencia, devuelva verdadero; en caso contrario, falso.

 var input = "your test string", regex = /B[a-zA-Z\d]+/;
 if(!regex.test(input))
 alert('No match is found');
 else
 alert('A match is found');

Probemos con otro método: match devuelve las coincidencias encontradas en una matriz.

 var input = "your test string", 
 regex = /B[a-zA-Z\d]+/g, 
 /*I've added the global modifier 'g' to the regex to get all the matches*/
 ary = input.match(regex); 
 if(ary===null)
 alert('No match is found');
 else
 alert('matches are: ' + ary.toString());

¿Qué tal el reemplazo de cuerdas? Intentemos eso con expresiones regulares ahora.

 var input = "your test string", 
 regex = /B[a-zA-Z\d]+/g;
 alert(input.replace(regex, "#"));

A continuación se muestra un codepen que puede modificar. Haga clic en la pestaña “JavaScript” para ver el código JS.

Ver la pluma gpLXYY por Preethi (@rpsthecoder) en CódigoPen.

Ejercicios de expresiones regulares

Para los ejercicios, puedes buscar en Google “ejercicios de expresiones regulares” e intentar resolverlos. Esto es lo que puede esperar al intentar estos ejercicios, según los niveles de dificultad.

Básico

Para mí poder validar una contraseña es suficiente para empezar. Por lo tanto, valide una contraseña de 8 a 16 caracteres de longitud, alfanumérica y con su elección de caracteres especiales permitidos.

Intermedio

Aquí es donde debes practicar con más datos del mundo real y aprender algunos puntos de expresiones regulares más como aserciones de mirar hacia adelante y hacia atrás y grupos coincidentes;

  • Validar códigos PIN, hexadecimales, fechas, ID de correo electrónico, punto flotante.
  • Reemplazar ceros finales, espacios en blanco, un conjunto de palabras coincidentes
  • Extraer diferentes partes de una URL
Avanzado

Puede optimizar las soluciones de los ejercicios anteriores (la expresión regular más óptima para el correo electrónico tiene miles de caracteres), de modo que llévalo tan lejos como te sientas cómodo y es suficiente.. También puedes probar:

  • Analizar HTML o XML (aunque en el mundo real no se recomienda hacerlo porque el uso de expresiones regulares para analizar un lenguaje no regular como HTML nunca lo hará infalible. Además, el análisis de XML es una tarea difícil, más adecuada para usuarios de nivel avanzado)
  • Reemplazo de etiquetas
  • Eliminar comentarios (excepto los comentarios condicionales de IE)

Herramientas de expresiones regulares

Herramientas para visualizar expresiones regulares son una de las cosas más geniales que existen para mí. Si alguna vez te encuentras con una expresión regular larga y compleja, simplemente cópiala y pégala en una de esas herramientas y podrás ver el flujo con claridad. Además de eso, existen muchas herramientas que puedes utilizar para jugar con el código de expresiones regulares. También muestran ejemplos y hojas de referencia junto con funciones para compartir.

  • depuración – Dibuja un diagrama de expresiones regulares según su entrada y puede compartirlo rápidamente con StackOverflow directamente desde allí.
  • RegExr – Puedes probar tu expresión regular con esta. También tiene referencias, una hoja de referencia y ejemplos para ayudarte.

Hoja de referencia de expresiones regulares

Simbólico Definición
[abc] Cualquier carácter individual a, b o c
[^abc] Cualquier carácter que no sea a, b o c
[a-z] Carácter entre (incluido) de la a a la z
[^a-z] Carácter excepto de la a a la z
[A-Z] Carácter entre (incluido) de la A a la Z
. Cualquier carácter
\s Cualquier carácter de espacio en blanco
\S Cualquier carácter que no sea un espacio en blanco
\d Cualquier dígito del 0 al 9
\D Cualquiera que no sea un dígito
\w Cualquier carácter de palabra (letra, número y guión bajo)
\W Cualquier carácter que no sea una palabra
(…) Capture todo lo incluido
(a|b) Coincide con a o b
¿a? El personaje a está ausente o presente una vez
a* El personaje a está ausente o presente más veces
un+ El carácter a está presente una o más veces
un{3} 3 apariciones del personaje a consecutivamente.
un{3,} 3 o más apariciones de un personaje consecutivamente.
un{3,6} 3 a 6 apariciones de un personaje consecutivamente
^ Inicio de cadena
ps Fin de la cuerda
\b Un límite de palabras. Si un carácter es la última o primera palabra de una palabra o si un carácter está entre un carácter de palabra o no palabra
\B Límite sin palabras