Páginas

lunes, 20 de febrero de 2023

Expresiones regulares en JavaScript

Qué es una expresión regular y como se crea en JavaScript.

Una expresión regular es una secuencia de caracteres que conforma un patrón de búsqueda. Este patrón se utiliza para buscar dentro conjuntos de caracteres contenidos en: literales, variables, ficheros, etc. y comprobar si hay coincidencia o no en la búsqueda.

Las búsquedas con patrones tienen muchas utilidades. Por ejemplo:

  • Buscar una subcadena dentro de una cadena de caracteres.
  • Reemplazar partes de una cadena por otras subcadenas.
  • Validar el formato de un dato.
  • Formatear datos.
  • Filtrar información y extraer datos que cumplan ciertas condiciones.
Las expresiones regulares no son complicadas, pero en una primera aproximación pueden intimidar. Cuando se comprenden y se saben manejar la perspectiva cambia y se convierten en grandes aliados de los programadores.

Un patrón es un objeto RegExp de JavaScript que se crea escribiendo caracteres entre dos barras oblicuas. Luego se puede utilizar de distintas formas, por ejemplo con el método test() que es uno de los métodos del objeto patrón. Un ejemplo:


   let patron = /verde/;
   console.log (patron.test("¡Qué verde era mi valle!")); // true

Este patrón /verde/ busca el conjunto de caracteres verde en la cadena "¡Qué verde era mi valle!" y como hay coincidencia devuelve true.

Hay más métodos de los objetos JavaScript que manejan los patrones. Por ejemplo el método search() del objeto String. Este método devuelve -1 si no encuentra coincidencia y un número positivo que indica la posición donde encuentra el patrón. Por ejemplo:


   "!Qué verde era mi valle¡".search(patr);

devuelve un 5 que es la posición de la cadena donde empieza la palabra verde si se cuenta de izquierda a derecha en la cadena empezando por 0.

Metacaracteres en las expresiones regulares.

En los patrones se usan caracteres que tienen significados especiales y es lo que se llama metacaracteres. Por ejemplo el caracter . en un patrón significa coincidencia con cualquier caracter. Un ejemplo:


   let patr = /r..a/; // Busca una r, 2 caracteres cualesquiera y una a.
   let cadena = "La casa roja";
   console.log (patr.test(cadena)); // true
   cadena = "La casa rosa";
   console.log (patr.test(cadena)); // true
   cadena = "El ron era bueno"; 
   console.log (patr.test(cadena)); // false
   cadena = "El remo se rompió";
   console.log (patr.test(cadena)); // false

Hay muchos metacaracteres para crear expresiones regulares y conseguir con los patrones realizar busquedas complejas. Estos patrones evitan muchas veces tener que crear largos algoritmos de programación. Por ejemplo:


/[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*@[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,5}/

este patrón sirve para comprobar si una dirección de correo electrónico tiene un formato correcto. De esta forma con esta sola línea se consigue evitar tener que idear y codificar un algoritmo que lo compruebe y cuantas menos líneas de código escritas, menos líneas de código a mantener.

Ejemplo de dos metacaracteres usados normalmente.

Metacaracter.

Significado ➝ Cualquier caracter.

Ejemplo:


   let patr = /a..a./; 
   let cadena = "ambar";
   console.log (patr.test(cadena)); // true
   cadena = "amigo";
   console.log (patr.test(cadena)); // false

Metacaracter\d

Significado ➝ Cualquier caracter que sea un número arábigo, es decir 0, 1 ,2 ,3 ,4 ,5 ,6 , 7 ,8 o 9

Ejemplo:


   let patr = /\d/; 
   let cadena = "Juan tiene 18 años";
   console.log (patr.test(cadena)); // true
   cadena = "Juan tiene dieciocho años";
   console.log (patr.test(cadena)); // false

Si necesitas más información sobre expresiones regulares y más ejemplos puedes consultar el libro Uso de expresiones regulares en JavaScript

O si lo prefieres puedes inscribirte en este curso Expresiones regulares en JavaScript