Haga coincidir múltiples ocurrencias con Regex en JavaScript

Tahseen Tauseef 12 octubre 2023
  1. Expresiones regulares en JavaScript
  2. Use RegExp.prototype.exec() para hacer coincidir múltiples ocurrencias con Regex en JavaScript
  3. Use String.prototype.search() para hacer coincidir múltiples ocurrencias con Regex en JavaScript
  4. Use String.prototype.matchAll() para hacer coincidir múltiples ocurrencias con Regex en JavaScript
Haga coincidir múltiples ocurrencias con Regex en JavaScript

En este artículo, aprenderá sobre expresiones regulares en JavaScript y cómo puede hacer coincidir múltiples ocurrencias en JavaScript.

Expresiones regulares en JavaScript

Las expresiones regulares son secuencias de caracteres que producen un patrón de búsqueda. Mientras busca datos en un texto, puede usar este patrón de búsqueda para comunicar lo que está buscando.

Una expresión regular puede ser tan básica como una sola letra o tan complicada como un patrón completo. Las expresiones regulares se pueden utilizar para realizar búsquedas de texto o operaciones de reemplazo de texto.

Las expresiones regulares tienen el potencial de mejorar significativamente el poder de su búsqueda.

Use RegExp.prototype.exec() para hacer coincidir múltiples ocurrencias con Regex en JavaScript

La función exec() busca una coincidencia en una cadena dada.

Sintaxis:

exec(str)

Parámetros:

  • str: La cadena con la que tienes que hacer coincidir la expresión regular.

Valor de retorno:

  • Si la coincidencia es exitosa, la función exec() devuelve una matriz y modifica la propiedad lastIndex del objeto de expresión regular. El texto coincidente es el primer elemento de la matriz devuelta, seguido de un elemento para cada grupo de captura entre paréntesis del texto coincidente.
  • Si la coincidencia no tiene éxito, la función exec() devuelve null y cambia lastIndex a 0.

Cuando los indicadores globales o fijos se establecen en los objetos RegExp de JavaScript, tienen estado. Guardan el lastIndex del partido anterior.

Internamente, exec() se puede usar para iterar a través de múltiples coincidencias en una cadena de texto (con grupos de captura).

Ejemplo:

const regex1 = RegExp('hello*', 'g');
const str1 = 'table hello, hello world';
let array1;

while ((array1 = regex1.exec(str1)) !== null) {
  console.log(`Found ${array1[0]}. Next starts at ${regex1.lastIndex}.`);
}

Producción :

"Found hello. Next starts at 11."
"Found hello. Next starts at 18."

También puede acceder al segmento de código anterior a través de este enlace.

Especifique la bandera g para encontrar coincidencias sucesivas

Si especifica el indicador g en su expresión regular, a menudo puede usar la función exec() para descubrir coincidencias posteriores en el texto exacto.

La búsqueda comienza en la subcadena de str proporcionada por la propiedad lastIndex de la expresión regular (test() avanza la propiedad lastIndex).

Al buscar un texto diferente, la propiedad lastIndex no se restablecerá; en su lugar, la búsqueda comenzará en el lastIndex actual.

Ejemplo:

let myRe = /ab*/g;
let str = 'abbcdefabh';
let myArray;
while ((myArray = myRe.exec(str)) !== null) {
  let msg = 'Found ' + myArray[0] + '. ';
  msg += 'Next match starts at ' + myRe.lastIndex;
  console.log(msg);
}

Producción :

"Found abb. Next match starts at 3"
"Found ab. Next match starts at 9"

Puede acceder a la demostración del segmento de código anterior a través de este enlace.

Usar exec() con RegEx Literals

También puede usar exec() sin crear explícitamente un objeto RegExp.

Ejemplo:

let matches = /(hello \S+)/.exec('This is a hello world!');
console.log(matches[1]);

Producción :

"hello world!"

Puede acceder a la demostración del segmento de código anterior a través de este enlace.

Use String.prototype.search() para hacer coincidir múltiples ocurrencias con Regex en JavaScript

El método search() finaliza la búsqueda de una coincidencia entre una expresión regular y este objeto String.

Sintaxis:

search(regexp)

Parámetros:

  • regexp: It is a regular expression object. If a non-RegEx object regexp is executed, it is implicitly converted to a RegExp with new RegExp(regexp).

Valor de retorno:

  • Si se encuentra una coincidencia, devolverá el índice de la primera coincidencia entre la expresión regular y la cadena proporcionada, o -1 si no se encuentra ninguna coincidencia.

Ejemplo:

const paragraph =
    'The swift brown fox leaps over the sluggish dog. Was the dog truly sluggish if it barked??';

const regex = /[^\w\s]/g;

console.log(paragraph.search(regex));

console.log(paragraph[paragraph.search(regex)]);

Producción :

43
"."

Puede acceder a la demostración del segmento de código anterior a través de este enlace.

Use String.prototype.matchAll() para hacer coincidir múltiples ocurrencias con Regex en JavaScript

La función matchAll() proporciona un iterador de todos los resultados que coinciden con una cadena con una expresión regular. Esto incluye capturar grupos.

Sintaxis:

matchAll(regexp)

Parámetros:

  • regexp: Es un objeto con expresiones regulares.

    Cuando se proporciona un objeto que no es RegEx obj, implícitamente se convierte en un RegExp usando new RegExp(obj).. Se emitirá un TypeError si el objeto RegExp no tiene el indicador /g.

Valor de retorno:

  • Devolverá un iterador (que no es un iterable reiniciable) de coincidencias.
  • Cada coincidencia es una matriz (con propiedades adicionales índice y entrada). La matriz de coincidencia tiene el texto coincidente como primer elemento y luego una cosa para cada grupo de captura entre paréntesis del texto coincidente.

Ejemplo 1:

const regexp = /t(e)(st(\d?))/g;
const str = 'test1test2';

const array = [...str.matchAll(regexp)];

console.log(array[0]);

console.log(array[1]);

Producción :

["test1", "e", "st1", "1"]
["test2", "e", "st2", "2"]

Puede acceder a la demostración del segmento de código anterior a través de este enlace.

Ejemplo 2:

function checkMultipleOccurrences(sentence) {
  var matchExpression = /(JavaScript?[^\s]+)|(typescript?[^\s]+)/g;
  return sentence.match(matchExpression);
}
var sentence =
    'This is my first JavaScript Program which is the subset of typescript';
console.log(sentence);
console.log(checkMultipleOccurrences(sentence));

Producción :

"This is my first JavaScript Program which is the subset of typescript"
["JavaScript", "typescript"]

Puede acceder a la demostración del segmento de código anterior a través de este enlace.

Para ejecutar el código mencionado anteriormente, use el siguiente comando:

node fileName.js.

Artículo relacionado - JavaScript Regex