Objeto `RegExp`
Este artigo explica o objeto RegExp.
Vamos explicar o objeto RegExp com exemplos práticos.
YouTube Video
Objeto RegExp
O que é RegExp?
RegExp (Expressão Regular) é um objeto usado para representar padrões em strings. Ao contrário das comparações simples de caracteres, você pode definir de forma flexível 'strings que atendem a determinadas condições.'.
Ao usar um objeto RegExp, você pode realizar operações como buscar, validar, extrair e substituir strings de forma concisa e clara. É altamente eficaz para tarefas do dia a dia, como validação de entradas em formulários, análise de logs e formatação de texto. Abaixo estão alguns exemplos simples de expressões regulares.
1const pattern = /abc/;- Esta expressão regular verifica se a sequência 'abc' está incluída.
Como criar expressões regulares (dois métodos)
Existem dois tipos de sintaxe para RegExp: notação literal e notação de construtor.
1// Literal notation: pattern and flags are written together
2const literal = /hello/;
3const literalWithFlag = /hello/i;
4const literalDigits = /\d+/;
5
6// Constructor notation: pattern and flags are passed separately
7const constructor = new RegExp("hello");
8const constructorWithFlag = new RegExp("hello", "i");
9const constructorDigits = new RegExp("\\d+");- A notação literal é concisa e legível, tornando-a adequada para expressões regulares usadas como constantes.. Por outro lado, a notação de construtor é usada quando você deseja construir o padrão usando variáveis ou determinar seu conteúdo em tempo de execução.
- Com a notação literal, você pode descrever de forma intuitiva tanto a expressão regular quanto suas flags juntas. Em contraste, com a notação de construtor, você precisa especificar o padrão e as flags separadamente.
- Além disso, com a notação de construtor, você passa a expressão regular como uma string, então as barras invertidas devem ser escapadas duas vezes.
test(): A validação mais básica
O objeto RegExp fornece métodos para realizar avaliações e operações usando expressões regulares. test() é um método que retorna um valor booleano indicando se o padrão corresponde.
1const regex = /JavaScript/;
2
3console.log(regex.test("I love JavaScript")); // true
4console.log(regex.test("I love TypeScript")); // false
- É o primeiro método que você deve aprender e é ideal para ramificações condicionais ou validação de entrada.
match(): Obter resultados correspondentes
match() retorna um array contendo a string encontrada e informações detalhadas.
1const text = "Version 1.2.3";
2const result = text.match(/\d+\.\d+\.\d+/);
3
4console.log(result[0]); // "1.2.3"
match()é mais conveniente do quetest()para processos de extração e análise.
replace(): substituição usando expressões regulares
replace() converte a parte encontrada em outra string.
1const text = "Hello World";
2const result = text.replace(/\s+/g, " ");
3
4console.log(result); // "Hello World"
- Você pode usá-lo para formatação de logs ou para normalizar espaços em branco desnecessários.
Noções básicas sobre flags (g, i, m)
Você pode especificar 'flags' em expressões regulares. Flags são opções que controlam como uma expressão regular processa strings de acordo com determinadas regras. Mesmo com o mesmo padrão, os resultados podem mudar dependendo das flags.
1const text = "apple Apple APPLE";
2const regex = /apple/gi; // or new RegExp("apple", "gi");
3
4console.log(text.match(regex)); // ["apple", "Apple", "APPLE"]
- A flag
g(global) faz a busca em toda a string. - A flag
i(ignorar maiúsculas/minúsculas) ignora a diferença de caixa ao fazer a correspondência.
1const multilineText = `apple
2banana
3apple`;
4
5const regexM = /^apple/gm;
6
7console.log(multilineText.match(regexM)); // ["apple", "apple"]
- A flag
m(multilinha) é usada para tratar strings multilinha linha por linha. Com isso,^e$operam com base no início ou fim de cada linha, e não da string inteira.
Classes de caracteres: combinar múltiplos candidatos
Usando colchetes [], você pode definir um conjunto de caracteres possíveis para uma única posição.
1const regex = /gr[ae]y/;
2
3console.log(regex.test("gray")); // true
4console.log(regex.test("grey")); // true
- Isso é útil para acomodar variações ortográficas e alternativas simples.
Metacaracteres: atalhos comuns
Metacaracteres são símbolos que permitem escrever padrões comumente usados de forma mais curta.
1const regex = /\d{4}-\d{2}-\d{2}/; // or new RegExp("\\d{4}-\\d{2}-\\d{2}");
2
3console.log(regex.test("2025-12-29")); // true
\dsignifica um dígito, e{n}especifica o número de repetições.
^ e $: validar a string inteira
^ e $ representam o início e o fim de uma string.
1const regex = /^\d+$/;
2
3console.log(regex.test("123")); // true
4console.log(regex.test("123a")); // false
- Eles são importantes em situações onde uma correspondência exata é necessária, como em entradas de formulário.
Agrupamento e captura
Ao usar parênteses (), você pode extrair valores parciais.
1const text = "2025/12/29";
2const regex = /(\d{4})\/(\d{2})\/(\d{2})/;
3const [, year, month, day] = text.match(regex);
4
5console.log(year, month, day); // 2025 12 29
- É frequentemente usado para decompor datas e strings estruturadas.
Erros comuns e pontos a serem observados
Expressões regulares são poderosas, mas tendem a ficar difíceis de ler.
1// Hard to read
2const regex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+$/;- Se ficar muito complexo, você pode considerar adicionar comentários, dividir as expressões ou revisar o próprio processo.
Resumo
RegExp é um recurso fundamental e essencial no JavaScript para descrever o processamento de strings de forma simples e precisa. Você não precisa aprender expressões regulares complexas desde o início; é importante usar métodos e sintaxes básicas como test, match e replace de acordo com suas necessidades práticas. Se você conseguir tratar expressões regulares não como 'conhecimento especial', mas como 'ferramentas para representação organizada de padrões', irá melhorar muito a qualidade e a legibilidade da validação de entradas e do processamento de texto.
Você pode acompanhar o artigo acima usando o Visual Studio Code em nosso canal do YouTube. Por favor, confira também o canal do YouTube.