El m茅todo exec()
ejecuta una busqueda sobre las coincidencias de una expresi贸n regular en una cadena especifica. Devuelve el resultado como array, o null
.
Si est谩 ejecutando una expresi贸n regular solo para buscar si algo se cumple o no, usa el m茅todo RegExp.prototype.test()
o el m茅todo String.prototype.search()
.
Sintaxis
regexObj.exec(cadena)
Parametros
cadena
- Cadena sobre la cual se quiere aplicar la expresi贸n regular
Valor devuelto
Si se encuentran coincidencial, el m茅todo exec()
devuelve un array y actualiza las propiedades del objecto de la expresi贸n regular. El array devuelto contiene los elementos encontrados en su primer elemento, y un elemento por cada parte de la expresi贸n regular que se encuentra entre parentesis y se encuentra dentro del texto que fu茅 capturado.
Si la busqueda falla, el m茅todo exec()
devuelve null
.
Descripci贸n
Considerando el siguiente ejemplo:
// Busca "quick brown" seguido de "jumps", ignorando los caracteres que se
// encuentren entre medias.
// Recuerda "brown" y "jumps"
// Ignora mayusculas y minusculas
var re = /quick\s(brown).+?(jumps)/ig;
var result = re.exec('The Quick Brown Fox Jumps Over The Lazy Dog');
La siguiente tabla muestra el resultado de este script:
Objeto | Propiedad/脥ndice | Descripci贸n | Ejemplo |
result |
[0] |
Todas las partes de la cadena que cumplen la expresi贸n regular | Quick Brown Fox Jumps |
[1],...[n] |
Las subcadenas entre parentesis que han sido encontradas, si hay alguna. El n煤mero de subcadenas encontradas es ilimitado |
[1] = Brown |
|
index |
El 铆ndice de base-0 del elemento encontrado en la cadena. | 4 |
|
input |
La cadena original. | The Quick Brown Fox Jumps Over The Lazy Dog |
|
re |
lastIndex |
El 铆ndice sobre el cual empieza la siguiente busqueda. Cuando no se usa g (busqueda global), esto va a ser siempre 0. | 25 |
ignoreCase |
Indica si la bandera "i " ha sido usada para ignorar mayusculas y minusculas. |
true |
|
global |
Indica si la bandera "g " fue usada para hacer una busqueda global. |
true |
|
multiline |
Indica si la bandera "m" fue usada para buscar en cadenas sobre multiples lineas |
false |
|
source |
El texto del patr贸n de busqueda | quick\s(brown).+?(jumps) |
Ejemplos
Encontrando coincidencias sucesivas
Si tu expresi贸n regular contiene la bandera "g
", puedes usar el m茅todo exec()
varias veces para encontrar coincidencias sucesivas en la misma cadena. Cuando lo haces, la busqueda empieza en la subcadena str
especificada por la propiedad lastIndex
de la expresi贸n regular (test()
tambi茅n movera hacia adelante el indice de la propiedad lastIndex
). Por ejemplo, asumiendo que tienes este script:
var myRe = /ab*/g;
var str = 'abbcdefabh';
var myArray;
while ((myArray = myRe.exec(str)) !== null) {
var msg = 'Se ha encontrado ' + myArray[0] + '. ';
msg += 'La siguiente coincidencia empieza en el indice ' + myRe.lastIndex;
console.log(msg);
}
Este script muestra el siguiente texto:
Se ha encontrado abb. La siguiente coincidencia empieza en el indice 3 Se ha encontrado ab. La siguiente coincidencia empieza en el indice 9
Nota: No uses la expresi贸n regular literalmente (o el constructor RegExp
) dentro de la condici贸n del bucle while o se crear谩 un bucle infinito si hay una coincidencia, por culpa de que la propiedad lastIndex
va a ser reiniciada por cada iteraci贸n del bucle. Adem谩s asegurate de que has usado la bandera de busqueda global "g" o se crear谩 un bucle tambi茅n.
Usando exec()
con RegExp
literales
Tambi茅n se puede usar exec() sin crear un objeto de
RegExp
:
var matches = /(hola \S+)/.exec('Esto es un hola mundo!');
console.log(matches[1]);
Esto loguear谩 un mensaje que contiene 'hola mundo!'.
Especificaciones
Especificaci贸n | Status | Comment |
---|---|---|
ECMAScript 3rd Edition (ECMA-262) | Standard | Definici贸n inicial. Implementado en JavaScript 1.2. |
ECMAScript 5.1 (ECMA-262) La definici贸n de 'RegExp.exec' en esta especificaci贸n. |
Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) La definici贸n de 'RegExp.exec' en esta especificaci贸n. |
Standard | |
ECMAScript Latest Draft (ECMA-262) La definici贸n de 'RegExp.exec' en esta especificaci贸n. |
Draft |
Compatiblidad con navegadores
Funcionalidad | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Soporte b谩sico | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Funcionalidad | Android | Chrome for Android | Edge | Firefox M贸vil (Gecko) | IE M贸vil | Opera M贸vil | Safari M贸vil |
---|---|---|---|---|---|---|---|
Soporte b谩sico | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Ver tambi茅n
- Cap铆tulo de Expresiones Regulares en la Gu铆a de Javascript
RegExp