JavaScript: Verificar se String contém outra String (Exemplos)

Verificar se uma string contém uma palavra é uma tarefa muito comum em toda linguagem de programação. Existem várias formas de verificar se uma string contém uma palavra ou substring em JavaScript. Veja abaixo a forma mais correta, implementada no ES6, e também outra forma amplamente utilizada.

Utilizando o método includes()

O método includes() é a forma oficial de se verificar se uma string está contida dentro de outra string. O método retorna true ou false.

'Olá mundo'.includes('mundo'); // true

Note que o método includes() é case sensitive, portanto caso você queira buscar por uma string independente se for maiúscula ou minúscula, você pode fazer o seguinte:

'OLÁ MUNDO'.includes('mundo'); // false
'OLÁ MUNDO'.toLowerCase().includes('mundo'); // true

Você pode, opcionalmente, passar um segundo parâmetro para indicar onde começar procurando pela substring:

'ABCDE'.includes('A', 0); // true
'ABCDE'.includes('A', 1); // false
'ABCDE'.includes('B', 1); // true

O método String.prototype.includes() foi implementado no JavaScript em 2015 na versão ES6, portanto ele pode não ser suportado em navegadores mais antigos, por exemplo, o Internet Explorer. Compatibilidade do método includes.

can I use es6 includes

Polyfill

Você pode forçar facilmente a implementação do método includes() através do polyfill abaixo:

if (!String.prototype.includes) {
	String.prototype.includes = function() {
		'use strict';
		return String.prototype.indexOf.apply(this, arguments) !== -1;
	};
}

Inclua este trecho de código no inicio do seu bundle (ex: app.js), e a função includes vai estar disponível mesmo em um navegador que não suporta nativamente o includes().

Caso queira o polyfill deste método para compatibilidade em todos os browsers: Array.prototype.includes.

Verificando se String contém palavra

Se você precisa verificar se uma palavra está contida em uma string, mas não pegar fragmentos da string que não seja uma palavra inteira, exemplo: "pessoa" está contida na frase "Olá pessoal", você pode ainda usar o método includes(), mas desta vez, no objeto Array.

'Olá pessoal'.split(/\W+/).includes('pessoa'); // false
'Olá pessoal'.split(/\W+/).includes('pessoal'); // true

O exemplo acima primeiro divide a string em um array de palavras através de split(), e verifica se a palavra em específico está contida na string.

Utilizando o método indexOf()

Antes do método oficial includes(), uma outra forma de verificar se uma string contém uma substring era usando o método indexOf(). Esse método retorna um inteiro com a posição da substring, e caso não encontre a substring, ele retorna -1. Você pode também passar um segundo parâmetro opcional para indicar onde começar buscando. Veja o exemplo abaixo:

'abcde'.indexOf('a') !== -1 // true
'abcde'.indexOf('f') !== -1 // false
'abcde'.indexOf('a', 1)  !== -1 // false
'abcde'.indexOf('a'); // 0
'abcde'.indexOf('b'); // 1

Este artigo foi útil pra você?

Ricardo Metring

Ricardo Metring

Sou desenvolvedor full stack e co-fundador da Criar.io.
Trabalho há 10 anos com programação e sempre interessado em aprender mais.

Artigos relacionados