Como o padrão funciona
| Parte | Significado |
|---|---|
^ | Início da string |
[A-Za-z0-9._%+-]+ | A parte local: uma ou mais letras, dígitos, pontos, sublinhados, sinais de porcentagem, de mais ou hífens |
@ | Um @ literal |
[A-Za-z0-9.-]+ | O nome do domínio, incluindo subdomínios |
\. | Um ponto literal antes do domínio de topo |
[A-Za-z]{2,} | O domínio de topo: duas ou mais letras (com, io, museum) |
$ | Fim da string |
Exemplos de código
JavaScript
const re = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/;
re.test(value); // true or falsePython
import re
bool(re.fullmatch(r'[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}', value))PHP
preg_match('/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/', $value) === 1;
Notas e limitações
Este é o padrão prático que a maioria dos formulários de cadastro usa. Ele aceita alguns endereços tecnicamente estranhos (dois pontos seguidos) e rejeita alguns válidos raros (partes locais entre aspas, domínios com endereço IP). O único teste real de um e-mail é enviar um link de confirmação. Em formulários HTML, <input type="email"> já oferece validação do navegador sem nenhum esforço extra.
Testador de Expressões Regulares
Digite um padrão e veja as correspondências serem destacadas em tempo real no seu texto de teste.