Haga coincidir múltiples ocurrencias con Regex en JavaScript
- Expresiones regulares en JavaScript
-
Use
RegExp.prototype.exec()
para hacer coincidir múltiples ocurrencias con Regex en JavaScript -
Use
String.prototype.search()
para hacer coincidir múltiples ocurrencias con Regex en JavaScript -
Use
String.prototype.matchAll()
para hacer 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 propiedadlastIndex
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()
devuelvenull
y cambialastIndex
a0
.
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 objectregexp
is executed, it is implicitly converted to aRegExp
withnew 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 unRegExp
usandonew RegExp(obj).
. Se emitirá unTypeError
si el objetoRegExp
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
yentrada
). 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.