Pular para o conteúdo
ToolMug

Padrões de Regex Comuns

Expressões regulares prontas para validações do dia a dia — e-mail, URL, domínio, endereços IPv4 e MAC, inteiros, decimais e valores em dinheiro, datas e horas, nomes de usuário, senhas fortes, cores hexadecimais, UUIDs e versões semânticas, além de formatos chineses de telefone, documento e CEP. Cada padrão vem com uma descrição e exemplos que combinam e que não combinam; copie com um clique ou digite na caixa para testar.

Roda no seu navegador — nada do que você digita é enviado

  • Endereço de e-mail

    Formato comum de e-mail com pontos, sinais de mais e domínios de vários níveis

    /^[\w.+-]+@[\w-]+(\.[\w-]+)+$/

    ✓ name@example.com a.b+tag@mail.co.uk✗ name@ @example.com a b@example.com

  • URL (http/https)

    Começa com http:// ou https:// e não contém espaços

    /^https?:\/\/[^\s/$.?#][^\s]*$/i

    ✓ https://example.com/path?q=1 http://localhost:8080✗ ftp://example.com example.com https:// bad

  • Nome de domínio

    Domínio de vários níveis com letras, dígitos e hifens

    /^(?=.{1,253}$)(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,63}$/

    ✓ example.com sub.example.co.uk✗ -bad.com example exa_mple.com

  • Endereço IPv4

    Quatro números de 0 a 255 sem zeros à esquerda

    /^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/

    ✓ 192.168.1.1 8.8.8.8 255.255.255.0✗ 256.1.1.1 1.2.3 01.2.3.4

  • Endereço MAC

    Seis pares de dígitos hexadecimais separados por dois-pontos ou hifens

    /^(?:[0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}$/

    ✓ 00:1A:2B:3C:4D:5E 00-1a-2b-3c-4d-5e✗ 001A2B3C4D5E 00:1A:2B:3C:4D

  • Número de celular da China

    11 dígitos começando com 13–19, sem +86

    /^1[3-9]\d{9}$/

    ✓ 13800138000 19912345678✗ 12345678901 1380013800 +8613800138000

  • Telefone fixo da China

    Código de área mais número, opcionalmente separados por hífen

    /^0\d{2,3}-?\d{7,8}$/

    ✓ 010-12345678 0755-1234567 02112345678✗ 12345678 010-123

  • Documento de identidade da China (18 dígitos)

    Verifica o tamanho do código de região e a data de nascimento; o último caractere pode ser X. O dígito verificador não é validado.

    /^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/

    ✓ 11010519491231002X 440308199901010012✗ 11010519491331002X 1101051949123100

  • CEP da China

    Seis dígitos

    /^\d{6}$/

    ✓ 100000 010000✗ 10000 1000000

  • Placa de veículo da China

    7 caracteres para placas comuns, 8 para veículos de nova energia

    /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]$/

    ✓ 京A12345 粤BD12345 沪A1234学✗ 京12345 京AI2345

  • Somente caracteres chineses

    Apenas ideogramas CJK comuns

    /^[\u4e00-\u9fa5]+$/

    ✓ 中文 正则表达式✗ 中文abc

  • Número de QQ

    5–11 dígitos, sem começar com 0

    /^[1-9]\d{4,10}$/

    ✓ 10001 123456789✗ 01234 1234

  • Número de cartão bancário

    16–19 dígitos; a validade também precisa de uma verificação de Luhn

    /^[1-9]\d{15,18}$/

    ✓ 6222021234567890123 4111111111111111✗ 0222021234567890 622202123456

  • Número inteiro

    Opcionalmente negativo

    /^-?\d+$/

    ✓ 0 -42 12345✗ 1.5 1e3

  • Inteiro positivo

    Sem zero à esquerda

    /^[1-9]\d*$/

    ✓ 1 100✗ 0 01 -1

  • Número decimal

    Opcionalmente negativo, com dígitos nos dois lados do ponto

    /^-?\d+(?:\.\d+)?$/

    ✓ 3.14 -0.5 42✗ .5 1. 1,000

  • Valor monetário

    Não negativo, com até duas casas decimais

    /^(?:0|[1-9]\d*)(?:\.\d{1,2})?$/

    ✓ 0 99.9 1234.56✗ 01.00 1.234 -1

  • Data (AAAA-MM-DD)

    Mês 01–12 e dia 01–31; a duração dos meses não é verificada

    /^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/

    ✓ 2026-09-26 1999-12-31✗ 2026-13-01 2026-9-26 26-09-2026

  • Hora (HH:MM[:SS])

    Formato 24 horas, segundos opcionais

    /^(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d)?$/

    ✓ 09:30 23:59:59✗ 24:00 9:30 12:60

  • Nome de usuário

    Começa com uma letra; 4–16 letras, dígitos ou sublinhados

    /^[a-zA-Z][a-zA-Z0-9_]{3,15}$/

    ✓ alice_01 Bob2026✗ 1alice ab bad-name

  • Senha forte

    Pelo menos 8 caracteres com letras maiúsculas e minúsculas, um dígito e um símbolo

    /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\w\s]).{8,}$/

    ✓ Passw0rd! Aa1@aaaa✗ password Password1 Aa1@

  • Cor hexadecimal

    #RGB ou #RRGGBB

    /^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/

    ✓ #fff #0F766E✗ fff #ffff #12345g

  • UUID

    Formato padrão de UUID (versões 1–8)

    /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i

    ✓ 123e4567-e89b-42d3-a456-426614174000✗ 123e4567-e89b-42d3-c456-426614174000 123e4567e89b42d3a456426614174000

  • Versão semântica

    MAIOR.MENOR.CORREÇÃO com metadados opcionais de pré-lançamento e build

    /^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[\da-zA-Z-]+(?:\.[\da-zA-Z-]+)*)?(?:\+[\da-zA-Z-]+(?:\.[\da-zA-Z-]+)*)?$/

    ✓ 1.0.0 2.1.3-beta.1+build.5✗ 1.0 01.0.0 v1.0.0

  • Par de tags HTML

    Encontra tags de abertura e fechamento correspondentes, capturando o nome da tag e o conteúdo

    /<([a-zA-Z][\w-]*)\b[^>]*>([\s\S]*?)<\/\1>/g

    ✓ <b>bold</b> <a href="#">link</a>✗ <b>unclosed plain text

  • Linha vazia

    Com a flag m, encontra linhas vazias ou só com espaços, por exemplo para removê-las

    /^\s*$/m

    ✓ ✗ text

Os padrões usam sintaxe do JavaScript e funcionam na maioria das linguagens, como Java, Python e Go (cuidado com o escape de barra invertida). Eles verificam apenas o formato; para saber se um número de documento ou cartão é real, é preciso checksum ou validação oficial.

Como usar

  1. Busque um formato ou filtre por categoria.
  2. Clique em Copiar para levar o padrão; escape as barras invertidas ao usá-lo dentro de uma string.
  3. Digite na caixa abaixo de um cartão para ver instantaneamente se combina.

Opções explicadas

Sintaxe
Escrita para JavaScript e compatível com a maioria das linguagens, como Java, Python, Go e PHP; dentro de literais de string, dobre as barras invertidas.
Correspondência da string completa
Os padrões de validação são ancorados com ^ e $, então toda a entrada precisa combinar. Para buscar dentro de um texto mais longo, remova as âncoras e adicione a flag g.
Formato x validade
Um padrão verifica apenas o formato. Saber se um número de documento ou cartão é real exige um dígito verificador ou uma checagem oficial.

Como um padrão é construído: o exemplo de IPv4

O padrão de IPv4 mostra a estrutura típica de uma regex de validação. Um octeto é escrito como quatro alternativas, testadas em ordem, de modo que cada uma aceita apenas 0–255:

25[0-5]      250–255
2[0-4]\d     200–249
1\d\d        100–199
[1-9]?\d     0–99, sem zero à esquerda

O padrão completo é (octeto\.){3}octeto, ancorado com ^ e $. É por isso que 192.168.1.1 combina, enquanto 256.1.1.1, 01.2.3.4 e 1.2.3 não combinam.

Formato não é validade

Um padrão verifica apenas a forma. O padrão de data aceita 2026-02-30 porque permite o dia 30 em todos os meses, e rejeita 2026-13-01 porque o mês 13 não existe. Para datas reais, faça o parse do valor com a biblioteca de datas da sua linguagem depois da verificação por regex.

Perguntas frequentes

Por que o regex de e-mail não segue totalmente o RFC?

Um regex totalmente compatível com o RFC 5322 é enorme e rejeita poucos erros reais. Use uma checagem permissiva e confirme o endereço com um e-mail de verificação.

Como depuro um regex mais complexo?

Use o testador de regex, que destaca cada correspondência e grupo e também pode testar substituições.

Esses padrões suportam Unicode?

A maioria é voltada para entrada ASCII. Adicione a flag u e os escapes de propriedade Unicode como \p{L} se precisar aceitar letras de qualquer alfabeto.

Privacidade

Esta ferramenta funciona inteiramente no seu navegador. Seus arquivos e textos são processados no seu dispositivo e nunca são enviados aos nossos servidores.

Ferramentas relacionadas