String.prototype.search()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
O método search()
realiza uma busca por uma ocorrência entre uma expressão regular e uma String
.
Sintaxe
str.search(regexp)
Parâmetros
Valor retornado
O índice na string do primeiro trecho que satisfaz a expressão regular. Do contrário, o valor -1
será retornado.
Descrição
Quando você quiser saber se um padrão foi encontrado, e também saber seu índice dentro de uma string, use search()
. (Se você deseja apenas saber se ele existe, use o método semelhante test()
do protótipo RegExp, que retorna um booleano.)
Para obter mais informações (mas em compensação a execução se torna mais lenta), use match()
(semelhante ao método exec()
da RegExp).
Exemplos
Usando search()
O exemplo a seguir pesquisa uma string com dois objetos regexp
diferentes para mostrar uma pesquisa bem-sucedida (valor positivo) vs. uma pesquisa mal-sucedida (-1).
let str = "hey JudE";
let re = /[A-Z]/g;
let reDot = /[.]/g;
console.log(str.search(re)); // retorna 4, que é o índice da primeira letra maiúscula "J"
console.log(str.search(reDot)); // retorna -1 pois não conseguiu encontrar o ponto "."
Especificações
Specification |
---|
ECMAScript Language Specification # sec-string.prototype.search |
Navegadores compatíveis
BCD tables only load in the browser
Notas específicas para a engine Gecko
- Antes do Gecko 8.0,
search()
foi implementado incorretamente. Quando era chamadosem parâmetros ou comundefined
, ele buscava pela string 'undefined
', ao invés de buscar pela string vazia. Isto foi corrigido. Agora'a'.search()
e'a'.search(undefined)
corretamente retornam 0. - A partir do Gecko 39, o argumento não-padrão
flags
está defasado (deprecated) e dispara um aviso no console (Erro do Firefox 1142351). - A partir do Gecko 47, o argumento não-padrão
flags
não é mais suportado em builds non-release e em breve será removido inteiramente (Erro do Firefox 1245801). - A partir do Gecko 49, o argumento não-padrão
flags
não é mais suportado (Erro do Firefox 1108382).