Dev Tools

Regex para Desenvolvedores: Guia Prático com Exemplos

Domine expressões regulares com exemplos práticos do dia a dia. Aprenda a validar emails, CPFs, URLs e mais com regex em JavaScript e Python.

12 de fevereiro de 202610 min de leituraDevThru

Expressões regulares (regex) são uma das ferramentas mais poderosas — e temidas — do arsenal de um desenvolvedor. Elas permitem buscar, validar e manipular texto com padrões complexos em uma única linha de código.

Neste guia prático, vamos desmistificar regex com exemplos reais que você pode usar no dia a dia.

O Que São Expressões Regulares?

Uma regex é um padrão de busca que descreve um conjunto de strings. Em vez de buscar texto exato, você descreve o "formato" do que procura.

// Busca exata — encontra só "gato"
'O gato preto'.includes('gato'); // true

// Regex — encontra "gato", "gata", "gatos"
/gat[oa]s?/.test('O gato preto'); // true
/gat[oa]s?/.test('A gata preta'); // true

Sintaxe Essencial

SímboloSignificadoExemploMatch
.Qualquer caracterec.tcat, cot, c9t
\dDígito (0-9)\d{3}123, 456
\wLetra, número ou _\w+hello, user_1
\sEspaço em branco\s+espaço, tab
*Zero ou maisab*cac, abc, abbc
+Um ou maisab+cabc, abbc
?Zero ou umcolou?rcolor, colour
{n}Exatamente n vezes\d{4}2024
{n,m}Entre n e m vezes\d{2,4}12, 123, 1234
[abc]Um dos caracteres[aeiou]a, e, i, o, u
[^abc]Nenhum dos caracteres[^0-9]qualquer não-dígito
^Início da string^OláOlá mundo
$Fim da stringfim$este é o fim
|OUgato|cachorrogato, cachorro
()Grupo de captura(\d{2})/(\d{2})25/12 → 25, 12

10 Regex que Todo Dev Precisa

1. Validar Email

const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;

emailRegex.test('user@email.com');     // true
emailRegex.test('invalid@');           // false
emailRegex.test('user@email.com.br');  // true

2. Validar CPF (formato)

const cpfRegex = /^\d{3}\.\d{3}\.\d{3}-\d{2}$/;

cpfRegex.test('123.456.789-00'); // true
cpfRegex.test('12345678900');    // false (sem máscara)

// Para aceitar com ou sem máscara:
const cpfFlexivel = /^\d{3}\.?\d{3}\.?\d{3}-?\d{2}$/;

3. Validar CNPJ (formato)

const cnpjRegex = /^\d{2}\.\d{3}\.\d{3}\/\d{4}-\d{2}$/;

cnpjRegex.test('12.345.678/0001-00'); // true

4. Validar Telefone Brasileiro

const phoneRegex = /^\(?\d{2}\)?\s?9?\d{4}-?\d{4}$/;

phoneRegex.test('(11) 98765-4321'); // true
phoneRegex.test('11987654321');     // true
phoneRegex.test('(21) 3456-7890'); // true

5. Validar URL

const urlRegex = /^https?:\/\/[\w.-]+(?:\.[\w.-]+)+[\/\w.-]*\/?$/;

urlRegex.test('https://devthru.com');       // true
urlRegex.test('http://sub.domain.com/path'); // true
urlRegex.test('ftp://invalid');              // false

6. Extrair Hashtags

const hashtagRegex = /#[\w\u00C0-\u00FF]+/g;

'Post sobre #JavaScript e #Python'.match(hashtagRegex);
// ['#JavaScript', '#Python']

7. Validar Senha Forte

// Mínimo 8 caracteres, 1 maiúscula, 1 minúscula, 1 número, 1 especial
const senhaRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*]).{8,}$/;

senhaRegex.test('Abc@1234');  // true
senhaRegex.test('abc12345');  // false (sem maiúscula e especial)

8. Validar CEP

const cepRegex = /^\d{5}-?\d{3}$/;

cepRegex.test('01234-567'); // true
cepRegex.test('01234567');  // true

9. Remover Tags HTML

const htmlRegex = /<[^>]*>/g;

'<p>Texto <strong>bold</strong></p>'.replace(htmlRegex, '');
// 'Texto bold'

10. Validar Data (DD/MM/AAAA)

const dataRegex = /^(0[1-9]|[12]\d|3[01])\/(0[1-9]|1[0-2])\/\d{4}$/;

dataRegex.test('25/12/2024'); // true
dataRegex.test('32/13/2024'); // false

Regex em Python

O módulo re do Python funciona de forma similar:

import re

# Validar email
email_pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
print(re.match(email_pattern, 'user@email.com'))  # Match object

# Extrair todos os números de um texto
numeros = re.findall(r'\d+', 'Pedido 123 com 5 itens por R$ 99')
print(numeros)  # ['123', '5', '99']

# Substituir padrões
texto = re.sub(r'\b\d{3}\.\d{3}\.\d{3}-\d{2}\b', '[CPF OCULTO]',
                'O CPF 123.456.789-00 foi encontrado')
print(texto)  # 'O CPF [CPF OCULTO] foi encontrado'

Dicas de Performance

  1. Compile regex que serão reutilizadas: Em Python, use re.compile(). Em JS, use var em vez de criar inline em loops.
  2. Evite backtracking: Padrões como (a+)+ podem causar ReDoS (regex denial of service). Use quantificadores possessivos ou atomic groups quando possível.
  3. Use ferramentas visuais: Teste suas regex interativamente antes de implementar no código.

Perguntas Frequentes

Regex serve para validar formulários?

Sim, mas combine com validação server-side. Regex no front-end melhora a UX, mas nunca deve ser a única linha de defesa.

Existe diferença entre regex em JavaScript e Python?

A sintaxe base é a mesma, mas existem diferenças em flags. JS usa /padrão/gi, Python usa re.IGNORECASE. Lookaheads e lookbehinds também variam.

Como debugar regex complexas?

Use ferramentas visuais como o Testador de Regex do DevThru que mostra matches em tempo real com explicações.

🛠️ Experimente na prática

Use nossas ferramentas online gratuitas — sem cadastro, direto no navegador.

regexexpressão regularJavaScriptPythonvalidaçãopadrões