Regex Practice · 30 exercícios

30 exercícios de Regex com soluções explicadas

Pratique do básico ao avançado com problemas curtos, exemplos reais e soluções comentadas. Comece por números e padrões simples, depois avance para grupos, JavaScript e lookarounds.

Como praticar sem cair na decoreba: Tente resolver cada problema antes de abrir a solução. Depois teste casos positivos e negativos no Playground. Se acertar, leve o conceito para as 24 fases e mantenha sua sequência diária.

Quer ganhar confiança com Regex para números?

Comece pelos exercícios 01, 02, 06, 16 e 17. Eles cobrem somente dígitos, quantidade exata, inteiros com sinal e decimais.

01 · 02 · 06 · 16 · 17

Guia: Regex para números

Praticando Regex para JavaScript

Os exercícios 19, 20, 24, 28 e 29 trabalham captura, identificadores, grupos nomeados e extração — padrões úteis quando você usa RegExp no JavaScript.

19 · 20 · 24 · 28 · 29

Guia: Regex em JavaScript
BásicoNúmeros

01. Somente dígitos

Aceite 12345 e rejeite A123, 12-34 e string vazia.

Ver solução e explicação
^\d+$

Os anchors exigem que a string inteira seja formada por um ou mais dígitos.

BásicoNúmeros

02. Exatamente quatro dígitos

Aceite 2026 e rejeite 26 e 20260.

Ver solução e explicação
^\d{4}$

O quantificador {4} exige exatamente quatro dígitos.

BásicoTexto

03. Somente letras ASCII

Aceite RegexArena e rejeite Regex123 e regex-arena.

Ver solução e explicação
^[A-Za-z]+$

A classe permite letras A–Z e a–z; use Unicode quando precisar cobrir outros alfabetos.

BásicoCódigos

04. Prefixo DEV com hífen opcional

Aceite DEV-2026 e DEV2026; rejeite DE-2026.

Ver solução e explicação
^DEV-?\d{4}$

O ? torna o hífen opcional e \d{4} exige quatro dígitos.

BásicoTexto

05. Slug simples

Aceite regex-arena e regex2026; rejeite espaços e hífen duplicado.

Ver solução e explicação
^[a-z0-9]+(?:-[a-z0-9]+)*$

O grupo permite novos blocos separados por um único hífen.

BásicoNúmeros

06. Entre cinco e oito dígitos

Aceite 12345 e 12345678; rejeite 1234 e 123456789.

Ver solução e explicação
^\d{5,8}$

O quantificador {5,8} define o tamanho mínimo e máximo.

BásicoLogs

07. Linha iniciada por ERROR

Aceite ERROR conexão perdida e rejeite INFO ERROR.

Ver solução e explicação
^ERROR\b

O anchor ^ exige o início da linha e  fecha a palavra.

BásicoTexto

08. Encontrar espaços repetidos

Encontre um ou mais espaços, tabs ou quebras consecutivas para poder substituí-los.

Ver solução e explicação
\s+

\s representa whitespace e + captura uma sequência.

BásicoAlternância

09. Cat ou dog no singular/plural

Aceite cat, cats, dog e dogs.

Ver solução e explicação
^(cat|dog)s?$

A alternância escolhe cat/dog e s? torna o plural opcional.

BásicoWeb

10. Cor hexadecimal

Aceite #22aa77 e #FFFFFF; rejeite 22aa77.

Ver solução e explicação
^#[0-9A-Fa-f]{6}$

O # é literal e a classe exige seis dígitos hexadecimais.

IntermediárioBrasil

11. CEP formatado

Aceite 41810-000 e rejeite 41810000.

Ver solução e explicação
^\d{5}-\d{3}$

Cinco dígitos, hífen e três dígitos.

IntermediárioDatas

12. Data DD/MM/AAAA

Aceite o formato 11/10/2026 e rejeite 2026-10-11.

Ver solução e explicação
^\d{2}/\d{2}/\d{4}$

A Regex verifica o formato visual; validade de calendário deve ser tratada separadamente.

IntermediárioBrasil

13. Telefone celular formatado

Aceite (71) 99999-1234 e rejeite 71 99999-1234.

Ver solução e explicação
^\(\d{2}\) \d{5}-\d{4}$

Parênteses literais precisam de escape.

IntermediárioE-mail

14. Formato prático de e-mail

Aceite dev@site.com e rejeite dev@site e @site.com.

Ver solução e explicação
^[\w.-]+@[\w.-]+\.[A-Za-z]{2,}$

É um padrão prático para exercício, não uma implementação completa do padrão de e-mail.

IntermediárioURL

15. URL HTTP ou HTTPS

Aceite https://regexarena.com/aprender/ e rejeite ftp://site.com.

Ver solução e explicação
^https?://[\w.-]+\.[A-Za-z]{2,}(?:/.*)?$

O s? aceita HTTP/HTTPS e o grupo final torna o caminho opcional.

IntermediárioNúmeros

16. Número inteiro com sinal opcional

Aceite 42, -42 e +42; rejeite 4.2.

Ver solução e explicação
^[+-]?\d+$

O sinal é opcional e o restante precisa ser somente dígitos.

IntermediárioNúmeros

17. Decimal com ponto ou vírgula

Aceite 42, 42.50 e -42,50.

Ver solução e explicação
^[+-]?\d+(?:[.,]\d+)?$

A parte decimal é opcional e pode usar ponto ou vírgula.

IntermediárioLogs

18. Nível de log + data

Aceite linhas iniciadas por INFO, WARN ou ERROR seguidas de uma data YYYY-MM-DD.

Ver solução e explicação
^(INFO|WARN|ERROR)\s+\d{4}-\d{2}-\d{2}

A alternância captura o nível e a segunda parte exige a data.

IntermediárioGrupos

19. Capturar usuário e domínio do e-mail

Em dev@site.com, capture dev no grupo 1 e site.com no grupo 2.

Ver solução e explicação
^([\w.-]+)@([\w.-]+\.[A-Za-z]{2,})$

Os parênteses criam grupos de captura reutilizáveis.

IntermediárioJavaScript

20. Identificador JavaScript simples

Aceite userName, _cache e $value; rejeite 2users.

Ver solução e explicação
^[A-Za-z_$][\w$]*$

O primeiro caractere tem regras diferentes; depois aceitamos caracteres de palavra e $.

AvançadoLookahead

21. Lookahead positivo

Capture DEV123 somente quando vier imediatamente antes de -OK.

Ver solução e explicação
^DEV\d{3}(?=-OK$)

O lookahead verifica o contexto sem consumir -OK.

AvançadoLookahead

22. Lookahead negativo

Aceite nomes em minúsculas, exceto a palavra exata admin.

Ver solução e explicação
^(?!admin$)[a-z]+$

O lookahead negativo elimina o valor reservado antes de testar o restante.

AvançadoLookbehind

23. Preço sem a moeda

Em R$ 150, capture apenas 150.

Ver solução e explicação
(?<=R\$ )\d+$

O lookbehind exige o prefixo sem incluí-lo no match.

AvançadoGrupos

24. Grupo nomeado para código

Capture DEV-2026 no grupo nomeado codigo.

Ver solução e explicação
(?<codigo>[A-Z]{3}-\d{4})

Grupos nomeados deixam a extração mais legível no JavaScript e no Raio-X.

AvançadoBackreference

25. Palavra repetida

Encontre o o ou regex regex, mas não regex arena.

Ver solução e explicação
\b(\w+)\s+\1\b

 exige que o segundo termo seja igual ao conteúdo capturado no grupo 1.

AvançadoValidação

26. Senha com maiúscula e número

Exija pelo menos 8 caracteres, uma letra maiúscula e um número, usando somente letras e dígitos.

Ver solução e explicação
^(?=.*[A-Z])(?=.*\d)[A-Za-z\d]{8,}$

Dois lookaheads verificam os requisitos antes de validar o conjunto permitido.

AvançadoArquivos

27. Extensão de imagem

Aceite arquivos terminados em jpg, jpeg, png ou webp usando a flag i.

Ver solução e explicação
^.+\.(?:jpe?g|png|webp)$

O grupo sem captura reúne as extensões e jpe?g cobre jpg/jpeg.

AvançadoGrupos

28. Data com grupos nomeados

Capture dia, mês e ano de 11/10/2026 em grupos nomeados.

Ver solução e explicação
^(?<dia>\d{2})/(?<mes>\d{2})/(?<ano>\d{4})$

Cada parte fica disponível pelo nome do grupo para extração posterior.

AvançadoURL

29. Capturar host e caminho

Em uma URL HTTP/HTTPS, capture o host em host e o caminho opcional em path.

Ver solução e explicação
^https?://(?<host>[\w.-]+\.[A-Za-z]{2,})(?<path>/.*)?$

Os grupos nomeados separam as partes úteis sem perder a validação do formato.

AvançadoBoss

30. Janela de contexto

Capture DEV-2026 somente depois de ID: e antes de ;OK.

Ver solução e explicação
(?<=ID:)(?<codigo>[A-Z]{3}-\d{4})(?=;OK$)

Combine lookbehind, grupo nomeado e lookahead em um único desafio.

Continue praticando

Transforme os exercícios em hábito: teste seus padrões, jogue as missões e use a revisão inteligente para reforçar os pontos fracos.

Abrir Regex TesterJogar 24 fases