We're looking for a user researcher to understand the needs of developers and designers. Is this you or someone you know? Check out the post: https://mzl.la/2IGzdXS

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:

// Encontra combinações "quick brown" seguido de "jumps", ignorando caracteres entre eles
// Relembra "brown" e "jumps"
// Ignora caixa (maiúsculo e minúsculo)
var re = /quick\s(brown).+?(jumps)/ig;
var result = re.exec('The Quick Brown Fox Jumps Over The Lazy Dog');

A tabela a seguir provê os resultados do script:

Objeto Propriedade/Índice Descrição Exemplo
result [0] A string completa dos caracteres encontrados Quick Brown Fox Jumps
[1], ...[n ] As combinações de substrings parametrizadas encontradas, se existir. A quantidade de possíveis substrings parametrizadas é ilimitado. [1] = Brown
[2] = Jumps
index

O índice base 0 do valor encontrado na string.

4
input String original The Quick Brown Fox Jumps Over The Lazy Dog
re lastIndex O índice que começa a próxima combinação encontrada. Quando "g" não é definido, este valor será sempre 0. 25
ignoreCase Indica se a flag "i" foi usada para ignorar caixa alta/baixa. true
global Indica se a flag "g" foi usada para encontrar combinações de forma global. true
multiline Indica se a flag "m" foi usada para pesquisar em strings de diversas linhas. false
source Texto do padrão. quick\s(brown).+?(jumps)

Exemplos

Procurando combinações sucessivas

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.

Usando exec() com RegExp literais

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

Especificação Status Comentário
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.
Rascunho  

Compatibilidade de browsers

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Funcionalidade Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Suporte Básico (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)
Funcionalidade Android Chrome for Android Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Suporte Básico (Yes) (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

Veja também

Etiquetas do documento e colaboradores

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