Introdução a Expressões Regulares em JavaScript
Expressões regulares são comandos para buscas e substituições complexas (ou simplesmente buscas). Elas permitem fazer coisas muito interessantes, mas, infelizmente, são bastante difíceis de aprender.
Existem vários métodos JavaScript para
trabalhar com expressões regulares. Vamos começar
a conhecê-los usando o exemplo de replace
- você já conhece este método: ele aceita como primeiro
parâmetro o que mudar, e como segundo
- para o que mudar. E o próprio método é aplicado
à string na qual a substituição é feita:
'bab'.replace('a', '!'); // retornará 'b!b'
O primeiro parâmetro deste método pode receber
não apenas uma string, mas uma expressão regular.
Uma expressão regular representa um conjunto
de comandos, dispostos dentro de barras /. Estas
barras são chamadas de delimitadores das expressões
regulares.
As próprias expressões regulares consistem em dois tipos de caracteres: daqueles que representam a si mesmos e dos caracteres de comando, que são chamados de caracteres especiais.
Letras e números representam a si mesmos. No próximo
exemplo, vamos usar uma expressão regular
para substituir a letra 'a' por !:
'bab'.replace(/a/, '!'); // retornará 'b!b'
Já o ponto é um caractere especial
e representa qualquer caractere. No próximo
exemplo, vamos encontrar a string seguindo este padrão:
a letra 'x', depois qualquer caractere, depois
a letra 'x' novamente:
'xax eee'.replace(/x.x/, '!'); // retornará '! eee'
Após os delimitadores, você pode escrever modificadores
- comandos que alteram as propriedades gerais
da expressão regular. Por exemplo, o modificador
g ativa o modo de busca e substituição global
- sem ele, a regex encontra apenas
a primeira correspondência, e com ele - todas as correspondências.
No exemplo a seguir, o modificador
g não está especificado e a regex encontrará apenas a primeira
correspondência:
'aab'.replace(/a/, '!'); // retornará '!ab'
E agora a regex encontrará todas as correspondências:
'aab'.replace(/a/g, '!'); // retornará '!!b'
Dada a string:
let str = 'ahb acb aeb aeeb adcb axeb';
Escreva uma expressão regular que encontre as strings
'ahb', 'acb', 'aeb'
seguindo o padrão: a letra 'a', qualquer caractere,
a letra 'b'.
Dada a string:
let str = 'aba aca aea abba adca abea';
Escreva uma expressão regular que encontre as strings
'abba', 'adca', 'abea'
seguindo o padrão: a letra 'a', 2
caracteres quaisquer, a letra 'a'.
Dada a string:
let str = 'aba aca aea abba adca abea';
Escreva uma expressão regular que encontre as strings
'abba' e 'abea', sem capturar
'adca'.