Regex para validar e-mails
O HTML5 usa uma regex específica para validar e-mails nos campos <input type="email">
. A regex é definida pela especificação HTML5 e segue o padrão definido na especificação RFC 5322, que descreve o formato de endereços de e-mail.
A regex usada pelo HTML5 para validar e-mails é a seguinte:
^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?)*$
Esta regex verifica várias partes de um endereço de e-mail:
- O nome de usuário (parte local do endereço de e-mail) pode conter letras maiúsculas e minúsculas, dígitos e alguns caracteres especiais como
!#$%&'*+/=?^_{|}~-.
; - O domínio deve começar com uma letra ou dígito, seguido opcionalmente por letras, dígitos ou hífens, e pode conter vários componentes de domínio separados por pontos (por exemplo, "example.com" ou "subdomain.example.co.uk").
Esta regex é usada pelos navegadores modernos quando você usa em um formulário HTML5 para validar automaticamente o campo de entrada de e-mail. Ela ajuda a garantir que o formato do endereço de e-mail seja válido, mas não verifica a existência real do endereço de e-mail, ok?
Você pode usar a mesma regex de e-mail que o HTML5 usa, em JavaScript, da seguinte maneira:
// Regex para validar endereços de e-mail, usada pelo HTML5
// OBS: deve estar em uma única linha
const regexEmailHTML5 = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?)*$/;
// E-mail a ser validado
const email = "[email protected]";
// Valida e-mail
if (regexEmailHTML5.test(email)) {
// Se o e-mail é válido, faça isso:
console.log("O e-mail é válido.");
} else {
// Se o e-mail é inválido, faça isso:
console.log("O e-mail não é válido.");
}
Neste exemplo, a regexEmailHTML5 é a mesma regex que o HTML5 usa para validar endereços de e-mail em campos <input type="email">
. Você pode usar o método test()
do objeto regex para verificar se uma string corresponde a essa regex e, assim, validar o endereço de e-mail em JavaScript. O código acima imprimirá "O e-mail é válido." se o endereço de e-mail estiver no formato correto e "O e-mail não é válido." se não estiver.
No Python, podemos usar a função abaixo que valida e-mails usando como exemplo, uma versão simplificada da Regex usada no HTML5, já com um exemplo de uso:
import re
def validate_email(email):
# Regex para validar endereços de e-mail, usada pelo HTML5
# OBS: deve estar em uma única linha
pattern = r'^[a-zA-Z0-9.!#$%&\'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?)*$'
# Verifica se o e-mail corresponde ao padrão regex
if re.match(pattern, email):
return True
else:
return False
# Exemplo de uso:
email = "[email protected]"
if validate_email(email):
print(f"O e-mail '{email}' é válido.")
else:
print(f"O e-mail '{email}' não é válido.")
Quem precisa usar PHP, aqui está uma função análoga às anteriores, bem simples e que usa a mesma regex:
<?php
function validate_email($email)
{
// Regex para validar endereços de e-mail
$pattern = '/^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?)*$/';
// Verifica se o e-mail corresponde ao padrão regex
if (preg_match($pattern, $email)) return true;
else return false;
}
// Exemplo de uso:
$email = "[email protected]";
if (validate_email($email)) {
echo "O e-mail '{$email}' é válido.";
} else {
echo "O e-mail '{$email}' não é válido.";
}
?>
Obviamente, essa regex pode ser ajustada para casos mais específicos como validar e-mails para um determinado domínio apenas...
Referências: HTML Living Standard