MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

Esta tradução está incompleta. Por favor, ajude a traduzir este artigo.

O método exec() executa a busca por um padrão em uma determinada string. Retorna um array, ou null.

Se você está precisa somente de um retorno verdadeiro/falso, use o método RegExp.prototype.test() ou String.prototype.search().

Sintaxe

regexObj.exec(string)

Parâmetros

string
A string para comparar com a expressão regular

Valor retornado

Se a combinação acontecer, o método exec() o método retorna um array e atualiza as propriedades do objeto da expressão regular. Esse array retornado possui o texto combinado como primeiro item e depois um item para cada captura contendo o respectivo texto.

Se falhar, o retorno do método exec() será null.

Descrição

Considere o exemplo abaixo:

// Match "quick brown" followed by "jumps", ignoring characters in between
// Remember "brown" and "jumps"
// Ignore case
var re = /quick\s(brown).+?(jumps)/ig;
var result = re.exec('The Quick Brown Fox Jumps Over The Lazy Dog');

The following table shows the results for this script:

Object Property/Index Description Example
result [0] The full string of characters matched Quick Brown Fox Jumps
[1], ...[n ] The parenthesized substring matches, if any. The number of possible parenthesized substrings is unlimited. [1] = Brown
[2] = Jumps
index The 0-based index of the match in the string. 4
input The original string. The Quick Brown Fox Jumps Over The Lazy Dog
re lastIndex The index at which to start the next match. When "g" is absent, this will remain as 0. 25
ignoreCase Indicates if the "i" flag was used to ignore case. true
global Indicates if the "g" flag was used for a global match. true
multiline Indicates if the "m" flag was used to search in strings across multiple lines. false
source The text of the pattern. quick\s(brown).+?(jumps)

Exemplos

Finding successive matches

If your regular expression uses the "g" flag, you can use the exec() method multiple times to find successive matches in the same string. When you do so, the search starts at the substring of str specified by the regular expression's lastIndex property (test() will also advance the lastIndex property). For example, assume you have this script:

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

This script displays the following text:

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

Note: Do not place the regular expression literal (or RegExp constructor) within the while condition or it will create an infinite loop if there is a match due to the lastIndex property being reset upon each iteration. Also be sure that the global flag is set or a loop will occur here also.

Using exec() with RegExp literals

You can also use exec() without creating a RegExp object:

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

This will log a message containing 'hello world!'.

Especificações

Specification Status Comment
ECMAScript 3rd Edition (ECMA-262) Padrão Initial definition. Implemented in JavaScript 1.2.
ECMAScript 5.1 (ECMA-262)
The definition of 'RegExp.exec' in that specification.
Padrão  
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'RegExp.exec' in that specification.
Padrão  
ECMAScript Latest Draft (ECMA-262)
The definition of 'RegExp.exec' in that specification.
Padrão em tempo real  

Compatibilidade de browsers

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)
Feature Android Chrome for Android Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

Veja também

Etiquetas do documento e colaboradores

 Colaboradores desta página: rafaelcavalcante, WagnerSilveira
 Última atualização por: rafaelcavalcante,