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 tipoRegExp
, ele será implicitamente convertido para umaRegExp
através da instruçãonew 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
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).
js
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 |
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 (bug 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 (bug 1245801). - A partir do Gecko 49, o argumento não-padrão
flags
não é mais suportado (bug 1108382).