Un JavaScript de expresiones regulares (o expresiones regulares ) es una secuencia de caracteres que podemos utilizar para trabajar eficazmente con cuerdas. Usando esta sintaxis, podemos:
  • buscar texto en una cadena
  • reemplazar subcadenas en una cadena
  • extraer información de una cadena
Desde la década de 1950, las expresiones regulares se formalizaron como un concepto para la búsqueda de patrones en algoritmos de procesamiento de cadenas.
JavaScript tiene soporte para expresiones regulares directamente integrado en el lenguaje. Una comprensión sólida de las expresiones regulares te hará un programador mucho más efectivo. ¡Entonces empecemos!

Un patrón de expresiones regulares muy básico

Aquí hay un patrón básico:
Simplemente estamos haciendo coincidir el texto literal con la cadena de prueba. En breve veremos el método de prueba de expresiones regulares en detalle.

¿Por qué usar expresiones regulares?

Como se mencionó, las expresiones regulares son una forma de describir patrones en datos de cadena. Podemos usarlos para verificar una cadena de caracteres, por ejemplo, para buscar una dirección de correo electrónico, haciendo coincidir el patrón definido por nuestra expresión regular.

Crear una expresión regular

En JavaScript, podemos crear una expresión regular de dos maneras: usando el constructor RegExp o usando barras diagonales /para encerrar el patrón de expresiones regulares .

El método del constructor:

La sintaxis es así:
Así por ejemplo:

El método literal:

La sintaxis es así:
Un ejemplo:
Nota: las banderas son opcionales, ¡las veremos más adelante en este artículo!
En el caso en que necesite crear expresiones regulares dinámicamente, deberá usar el método constructor.
En cualquier caso, el resultado dará un objeto regex, que tendrá los mismos métodos y propiedades adjuntas, para nuestro uso.

Métodos de expresión regular

Cuando probamos nuestras expresiones regulares, generalmente usamos uno de dos métodos: RegExp.prototype.test()RegExp.prototype.exec().

RegExp.prototype.test ()

Utilizamos este método para probar si se ha encontrado una coincidencia o no. Acepta una cadena que probamos con una expresión regular y devuelve true false, dependiendo de si se encuentra la coincidencia o no.
Veamos un ejemplo:

RegExp.prototype.exec ()

Utilizamos este método para recibir una matriz de todos los grupos coincidentes. Acepta una cadena que probamos contra nuestra expresión regular.
Un ejemplo:
En este ejemplo, ‘hello’es nuestro patrón coincidente, indexes donde comienza la expresión regular y inputes la cadena que se pasó.
Para el resto del artículo, utilizaremos el test()método.

El poder de la expresión regular

Hasta ahora hemos visto cómo crear patrones simples de expresión regular. Esto es realmente solo la punta del iceberg. ¡Vamos a sumergirnos en la sintaxis para ver todo el poder de las expresiones regulares para manejar tareas más complejas!
Un ejemplo de una tarea más compleja sería si tuviéramos que hacer coincidir varias direcciones de correo electrónico. Al usar los caracteres especiales definidos en la sintaxis, ¡podemos lograr esto!
Echemos un vistazo ahora para que podamos comprender mejor y, por lo tanto, utilizar expresiones regulares en nuestros programas.

Banderas

En cualquier expresión regular, podemos usar las siguientes banderas:
  • g: coincide con el patrón varias veces
  • i: hace que la expresión regular no sea sensible
  • m: habilita el modo multilínea. Dónde ^$coincidir con el inicio y el final de toda la cadena. Sin esto, las cadenas de varias líneas coinciden con el principio y el final de cada línea.
  • u: habilita el soporte para Unicode
  • s: abreviatura de una sola línea , hace .que también coincida con los nuevos caracteres de línea
Las banderas también se pueden combinar en una sola expresión regular y el orden de la bandera no importa. Se agregan al final de la cadena en literales regex :
Si usa constructores de objetos RegExp , se agregan como segundo parámetro:

Grupos de personajes:

Conjunto de caracteres [abc]

Usamos conjuntos de caracteres para unir diferentes personajes en una sola posición. Coinciden con cualquier carácter individual en la cadena con los caracteres dentro de los corchetes:

Juego de caracteres negado [^ abc]

Coincide con todo lo que no está entre corchetes:

Rangos [az]

Si queremos unir todas las letras de un alfabeto en una sola posición, podemos usar rangos. Por ejemplo: [aj] coincidirá con todas las letras de a a j. También podemos usar dígitos como [0–9] o letras mayúsculas como [AZ] :
Si existe al menos un personaje en el rango que probamos, devolverá verdadero:
Los rangos también se pueden combinar usando -:
Partidas de artículos de rango múltiple
Podemos verificar si una cadena contiene uno o solo un carácter en un rango. Comience la expresión regular con ^y termine con $:

Metacaracteres

Los metacaracteres son personajes con un significado especial. Echemos un vistazo a algunos de estos aquí:
  • \d : coincide con cualquier dígito, siendo[0-9]
  • \D: coincide con cualquier carácter que no sea un dígito, efectivamente[^0-9]
  • \w: coincide con cualquier carácter alfanumérico (más subrayado), equivalente a [A-Za-z_0-9]
  • \W: coincide con cualquier carácter no alfanumérico, por lo que cualquier cosa excepto [^A-Za-z_0-9]
  • \s: coincide con cualquier carácter de espacio en blanco: espacios, tabulaciones, líneas nuevas y espacios Unicode
  • \S: coincide con cualquier carácter que no sea un espacio en blanco
  • \0: coincide con nulo
  • \n: coincide con un carácter de nueva línea
  • \t: coincide con un carácter de tabulación
  • \uXXXX: coincide con un carácter unicode con el código XXXX (requiere la ubandera)
  • .: coincide con cualquier carácter que no sea un carácter de nueva línea (p \nej. ) (a menos que use la sbandera, explicada más adelante)
  • [^]: coincide con cualquier carácter, incluidos los caracteres de nueva línea. Es muy útil en cadenas de varias líneas.

Cuantificadores

Los cuantificadores son símbolos que tienen un significado único en expresiones regulares.
Vamos a verlos en acción:
  • + Coincide con la expresión anterior 1 o más veces:
  • * Coincide con la expresión anterior 0 o más veces:
  • ? Coincide con la expresión anterior 0 o 1 vez, es decir, el patrón anterior es opcional:
  • ^ Coincide con el comienzo de la cadena, la expresión regular que sigue debe estar al comienzo de la cadena de prueba:
  • $ Coincide con el final de la cadena, la expresión regular que la precede debe estar al final de la cadena de prueba:
  • {N}Coincide exactamente con N ocurrencias de la expresión regular anterior:
  • {N,}Coincide con al menos N apariciones de la expresión regular anterior.
  • {N,M}Coincide con al menos N ocurrencias y como máximo M ocurrencias de la expresión regular anterior (cuando M> N).
  • X|YLa alternancia coincide con X o Y:
Nota: Para usar cualquier carácter especial como parte de la expresión, por ejemplo, si desea hacer coincidir el literal +., entonces deberá escapar de ellos con una barra diagonal inversa \Al igual que:

Revisando Regex

Con estos conceptos frescos en nuestras mentes, ¡repasemos lo que hemos aprendido!

Coincide con cualquier número de 10 dígitos:

Entonces \dcoincide con cualquier carácter de dígitos. {10}coincide con la expresión anterior, en este caso \d exactamente 10 veces. Entonces, si la cadena de prueba contiene menos de o más de 10 dígitos, el resultado será falso.

Haga coincidir una fecha con el siguiente formato:

DD-MM-YYYY DD-MM-YY
Aquí hemos envuelto toda la expresión dentro $, para que la coincidencia abarque toda la cadena. (es el comienzo de la primera subexpresión. \d{1,2}coincide con al menos 1 dígito y como máximo 2 dígitos. -coincide con el guión literal. )es el final de la primera subexpresión.
Luego {2}coincide con la primera subexpresión exactamente 2 veces. \d{2}coincide exactamente con 2 dígitos. (\d{2})?coincide exactamente con 2 dígitos. Sin embargo, es opcional, por lo que cualquier año contiene 2 dígitos o 4 dígitos.

Conclusión

¡Y ahí vamos! Hemos examinado Expresiones regulares desde lo más básico hasta implementaciones más avanzadas. Incluyendo los métodos literales y de construcción, métodos de prueba, banderas y sintaxis de caracteres.
¡Las expresiones regulares pueden ser bastante complejas! Sin embargo, tomarse el tiempo para aprender la sintaxis lo ayudará en gran medida a identificar los patrones de expresiones regulares más fácilmente. ¡Cualquier nueva confianza que gane seguramente lo tendrá listo para conquistar el próximo obstáculo que encuentre en su viaje de codificación!
¡Espero que hayas encontrado útil este artículo! Puedes seguirme en Medium. También estoy en Twitter . Siéntase libre de dejar cualquier pregunta en los comentarios a continuación. Estaré encantado de ayudar!