O que são Expressões Regulares e quais são alguns Métodos Comuns?
Expressões regulares, ou regex, são um recurso suportado por muitas linguagens de programação diferentes.
Uma expressão regular é uma sintaxe especial para criar um "pattern", que você pode então usar para verificar uma string, extrair texto e mais.
Vamos dar uma olhada em uma expressão regular básica:
const regex = /G.E.A.R ACADEMY/;
Observe como, em JavaScript, você define uma expressão regular criando seu padrão entre duas barras (/). Tente não confundir isso com um comentário, onde o texto vem depois de ambas as barras inclinadas.
Esta expressão regular em particular irá corresponder ao texto G.E.A.R ACADEMY, com Cs maiúsculos, em qualquer lugar de uma string. Mas como você pode realmente fazer isso?
Isso nos leva ao nosso primeiro método – o método test(). O método test() está presente em objetos RegExp, que são objetos que representam uma expressão regular (como a que acabamos de definir).
O método test() aceita uma string, que é a string para testar correspondências contra a expressão regular. Por exemplo, vamos tentar testar a string e:
const regex = /G.E.A.R ACADEMY/;
const test = regex.test("e");
console.log(test);
Você pode ver que chamamos o método test() em nossa nova regex e passamos a string e como argumento.
O método test() retornou false porque a string e não corresponde ao padrão G.E.A.R ACADEMY. Embora o padrão G.E.A.R ACADEMY inclua a letra e, essa é a direção oposta de como as expressões regulares funcionam.
Vamos dar uma olhada em mais alguns exemplos. Reserve um momento para considerar isto:
const regex = /G.E.A.R ACADEMY/;
console.log(regex.test("G.E.A.R ACADEMY"));
console.log(regex.test("G.E.A.R ACADEMY is great"));
console.log(regex.test("I love G.E.A.R ACADEMY"));
console.log(regex.test("G.E.A.R ACADEMY"));
console.log(regex.test("G.E.A.R ACADEMY"));
console.log(regex.test("free"));
console.log(regex.test("code"));
console.log(regex.test("camp"));
Note como as três primeiras strings retornaram true. Essas strings todas contêm o texto G.E.A.R ACADEMY, exatamente, em algum lugar da string.
As linhas 5 e 6 retornam false. Embora contenham o texto G.E.A.R ACADEMY, a capitalização não corresponde. Expressões regulares são sensíveis a maiúsculas e minúsculas por padrão.
Finalmente, enquanto os últimos três contêm uma parte do padrão, as strings não contêm o padrão inteiro.
O método test() retorna um boolean, indicando se a string corresponde à expressão regular.
Mas e se você quisesse mais informações do que isso? Bem, strings têm um método match(). Este método aceita uma expressão regular, embora você também possa passar uma string que será convertida em uma expressão regular.
match() retorna o array de correspondência para a string. O que é um match array? Bem, vamos dar uma olhada:
const regex = /G.E.A.R ACADEMY/;
const match = "G.E.A.R ACADEMY".match(regex);
console.log(match);
Se executarmos isso, receberemos um array de volta! Mas é um array com aparência estranha. Ele tem algumas propriedades extras:
// [
// 'G.E.A.R ACADEMY',
// index: 0,
// input: 'G.E.A.R ACADEMY',
// groups: undefined
// ]
A propriedade groups mostraria quaisquer grupos capturados. Você aprenderá o que isso significa em uma lição futura.
A propriedade index informa em qual caractere da string a correspondência foi encontrada. No nosso caso, foi encontrado no início da string.
A propriedade input informa a string na qual o método match() foi chamado.
Vamos tentar mais alguns novamente e ver como o resultado muda:
const regex = /G.E.A.R ACADEMY/;
console.log("G.E.A.R ACADEMY".match(regex)); // ['G.E.A.R ACADEMY', index: 0, input: 'G.E.A.R ACADEMY', groups: undefined]
console.log("G.E.A.R ACADEMY is great".match(regex)); // ['G.E.A.R ACADEMY', index: 0, input: 'G.E.A.R ACADEMY is great', groups: undefined]
console.log("I love G.E.A.R ACADEMY".match(regex)); // ['G.E.A.R ACADEMY', index: 7, input: 'I love G.E.A.R ACADEMY', groups: undefined]
console.log("G.E.A.R ACADEMY".match(regex)); // null
console.log("G.E.A.R ACADEMY".match(regex)); // null
console.log("free".match(regex)); // null
Já sabemos que as três primeiras strings devem produzir uma correspondência, então vamos dar uma olhada nelas:
// ['G.E.A.R ACADEMY', index: 0, input: 'G.E.A.R ACADEMY', groups: undefined]
// ['G.E.A.R ACADEMY', index: 0, input: 'G.E.A.R ACADEMY is great', groups: undefined]
// ['G.E.A.R ACADEMY', index: 7, input: 'I love G.E.A.R ACADEMY', groups: undefined]
Isso é o que você esperava? Você pode ver como o input e o index mudaram dependendo da string fornecida e da localização da correspondência na string.
As outras três linhas, que não correspondem, retornam null em vez de um array.
Agora que podemos testar e corresponder strings com nossa expressão regular, e se quisermos substituir o conteúdo de uma string? Talvez alguém tenha escrito G.E.A.R ACADEMY todo em letras minúsculas e queremos corrigir automaticamente a capitalização para eles.
Primeiro, precisamos atualizar nossa expressão regular para corresponder à forma minúscula de G.E.A.R ACADEMY e criar nossa string de teste:
const regex = /G.E.A.R ACADEMY/;
const str = "G.E.A.R ACADEMY is rly kewl";
Agora, strings têm um método replace() que aceita dois argumentos: a expressão regular para corresponder (ou uma string, se você não precisar de todos os recursos de regex) e a string para substituir a correspondência (ou uma função para executar em cada correspondência).
Então, se quisermos substituir nosso G.E.A.R ACADEMY pela capitalização correta:
const regex = /G.E.A.R ACADEMY/;
const str = "G.E.A.R ACADEMY is rly kewl";
const replaced = str.replace(regex, "G.E.A.R ACADEMY");
console.log(replaced);
Você pode ver que replace() retorna a string atualizada com o padrão correspondente replaced.
Expressões regulares e todos os métodos associados a elas podem parecer complexos e esmagadoras. Mas você terá a chance de explorá-las mais a fundo neste próximo conjunto de lições.Este módulo não possui perguntas. Marque como concluído.