Chaves em expressões regulares JavaScript
Os operadores '+', '*', '?'
são úteis, no entanto, com eles não é possível especificar
um número exato de repetições. Neste caso,
o operador {} virá ao seu resgate.
Ele funciona da seguinte forma: {5}
- cinco repetições, {2,5} – repete
de duas a cinco vezes (ambos inclusivos), {2,}
- repete duas vezes ou mais. Preste atenção
ao fato de que não há esta variante - {,2}
- . Veja os exemplos:
Exemplo
Neste exemplo, o padrão de busca é o seguinte:
letra 'x', letra 'a' uma
ou duas vezes, letra 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,2}x/g, '!');
Como resultado, o seguinte será armazenado na variável:
'xx ! ! xaaax'
Exemplo
Neste exemplo, o padrão de busca é o seguinte:
letra 'x', letra 'a' duas
vezes ou mais, letra 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{2,}x/g, '!');
Como resultado, o seguinte será armazenado na variável:
'xx xax ! !'
Exemplo
Neste exemplo, o padrão de busca é o seguinte:
letra 'x', letra 'a' três
vezes, letra 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{3}x/g, '!');
Como resultado, o seguinte será armazenado na variável:
'xx xax xaax !'
Exemplo
Neste exemplo, o padrão de busca é o seguinte:
letra 'a' dez vezes:
let str = 'aaa aaaaaaaaaa aaa';
let res = str.replace(/a{10}/g, '!');
Como resultado, o seguinte será armazenado na variável:
'aaa ! aaa'
Exemplo
Neste exemplo, o autor do código queria o seguinte padrão:
letra 'x', letra 'a' três
vezes ou menos, letra 'x',
mas, infelizmente, isto - {,3} - não funciona.
É necessário especificar explicitamente:
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,3}x/g, '!');
Como resultado, o seguinte será armazenado na variável:
'xx ! ! !'
Exemplo
Zero também é permitido:
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{0,3}x/g, '!');
Como resultado, o seguinte será armazenado na variável:
'! ! ! !'
Problemas práticos
Dada a string:
let str = 'aa aba abba abbba abbbba abbbbba';
Escreva uma expressão regular que encontre as strings
'abba', 'abbba', 'abbbba'
e apenas elas.
Dada a string:
let str = 'aa aba abba abbba abbbba abbbbba';
Escreva uma expressão regular que encontre strings
do tipo 'aba', nas quais 'b' ocorre
menos de 3 vezes (inclusive).
Dada a string:
let str = 'aa aba abba abbba abbbba abbbbba';
Escreva uma expressão regular que encontre strings
do tipo 'aba', nas quais 'b' ocorre
mais de 4 vezes (inclusive).