Padrão regex para validação de email com casos de teste. Abrange conformidade com RFC 5322, erros comuns é por que o regex só não e suficiente.
alice.chen@company.co.ukíndice 17bob+tag@gmail.comíndice 42test@sub.domain.example.orgíndice 113O padrão acima corresponde a grande maioria dos endereços de email do mundo real. Ele exige uma parte local não vazia usando caracteres alfanuméricos e ._%+-, depois um @, depois um domínio com pelo menos um ponto, depois um TLD de duas ou mais letras. Linhas que correspondem: user@example.com, alice.chen@company.co.uk, bob+tag@gmail.com. Linhas que não correspondem: invalid@, @missing-local.com, no-at-sign.com, user@.com.
| Segmento | Padrão | O que corresponde |
|---|---|---|
| Ancora deinício | ^ |
Início de cada linha (com flag m) |
| Parte local | [a-zA-Z0-9._%+\-]+ |
Letras, dígitos e ._%+- — um ou mais |
| Arroba | @ |
@ literal |
| Rotulos de domínio | [a-zA-Z0-9.\-]+ |
Nome de domínio, permitindo pontos e hífens |
| Ponto antes do TLD | \. |
Ponto literal |
| TLD | [a-zA-Z]{2,} |
Duas ou mais letras (cobre .io, .museum, .co.uk segundo rótulo) |
| Ancora de fim | $ |
Final de cada linha (com flag m) |
Não permitir + na parte local é o problema mais frequente. Gmail e muitos outros provedores direcionam user+tag@gmail.com para a mesma caixa de entrada que user@gmail.com, e muitos usuários confiam nisso para filtragem. Um padrão como [a-zA-Z0-9._%-]+ rejeita silenciosamente esses endereços.
Não permitir TLDs de varios níveis é o segundo erro mais comum. Um padrão terminado em \.[a-zA-Z]{2,3} rejeita alice@company.co.uk porque ve .co como o TLD.
Não ancorar o padrão com ^ e $ significa que uma string como isto não é um email mas contem um@example.com correspondera ao fragmento incorporado. Ao validar, sempre ancore a string ou linha completa.
Os navegadores aplicam seu proprio padrão a <input type="email">. O padrão real usado pela especificação HTML5 e:
/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/
Isso permite caracteres como !#$%&'* na parte local, que são válidos segundo RFC 5321 mas quase nunca vistos na prática. Usar type="email" fornece esta validação gratuitamente em navegadores compatíveis.
Um regex pode confirmar que o endereço parece um email. Não pode dizer se o domínio tem registros MX funcionais, se a caixa de entrada existe ou se o usuário controla o endereço. A abordagem padrão para qualquer fluxo que dependa de um endereço de email real e:
type="email") para capturar erros de digitação obvios.Isso cobre os casos que o regex perde completamente, incluindo domínios digitados errado (gmial.com) e endereços que parecem válidos mas pertencem a outra pessoa.
Para a maioria dos aplicativos, use o padrão nesta página (ou o type="email" do HTML5) para capturar erros obvios de entrada, depois verifique a propriedade com um email de confirmação. Recorra a uma biblioteca de validação apenas se precisar lidar com endereços internacionais, analisar cabeçalhos de email brutos ou aplicar regras mais rigorosas que o padrão padrão oferece.
Se você trabalha com URLs como parte do mesmo formulario, o Codificador de URL pode ajudar a codificar com segurança os parametros de string de consulta que incluem endereços de email.
Nothing you paste leaves this tab. Every tool runs entirely in your browser — no upload, no server, no account.