String.prototype.search()

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

regexp
Um objeto contendo uma expressão regular. Se um objeto obj for passado como parâmetro e não for do tipo RegExp, ele será implicitamente convertido para uma RegExp através da instrução new RegExp(obj).

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

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

Specificação Status Comentário(s)
ECMAScript 3rd Edition (ECMA-262) Padrão Definição inicial. Implementado no JavaScript 1.2.
ECMAScript 5.1 (ECMA-262)
The definition of 'String.prototype.search' in that specification.
Padrão
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'String.prototype.search' in that specification.
Padrão
ECMAScript (ECMA-262)
The definition of 'String.prototype.search' in that specification.
Padrão em tempo real
Estamos convertendo nossos dados de compatibilidade para o formato JSON. Esta tabela de compatibilidade ainda usa o formato antigo, pois ainda não convertemos os dados que ela contém. Descubra como você pode ajudar!
Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Suporte básico (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)
Feature Android Chrome for Android Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Suporte básico (Yes) (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

Notas específicas para a engine Gecko

  • Antes do Gecko 8.0, search() foi implementado incorretamente. Quando era chamadosem parâmetros ou com undefined, 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 (Firefox 39 / Thunderbird 39 / SeaMonkey 2.36), o argumento não-padrão flags está defasado (deprecated) e dispara um aviso no console (bug 1142351).
  • A partir do Gecko 47 (Firefox 47 / Thunderbird 47 / SeaMonkey 2.44), o argumento não-padrão flags não é mais suportado em builds non-release e em breve será removido inteiramente (bug 1245801).
  • A partir do Gecko 49 (Firefox 49 / Thunderbird 49 / SeaMonkey 2.46), o argumento não-padrão flags não é mais suportado (bug 1108382).

Veja também