CRM e plataformas de datosEmail Marketing & Automatización

Como validar un enderezo de correo electrónico con expresións regulares (Regex). Exemplo de código HTML5, PHP, C#, Python e Java.

Practicamente todas as linguaxes de programación admiten expresións regulares hoxe en día. Aínda que a algúns desenvolvedores non lles gustan, son realmente unha boa práctica xa que normalmente realizan funcións como a validación moi rápido con menos recursos do servidor. Os enderezos de correo electrónico son un exemplo perfecto... onde se poden verificar facilmente para asegurarse de que están formateados correctamente.

Teña en conta que a validación non o é comprobación. A validación simplemente significa que os datos pasados ​​seguen un formato estándar que está correctamente construído. Algunhas cousas interesantes sobre os enderezos de correo electrónico que poderían perderse tras a validación.

Que é un enderezo de correo electrónico?

Un enderezo de correo electrónico, tal e como o define o Formato de mensaxe de Internet (RFC 5322), está formado por dúas partes principais: unha parte local e unha parte do dominio. A parte local vai antes da @ símbolo e a parte do dominio vén despois. Aquí tes un exemplo de enderezo de correo electrónico: example@example.com, Onde example é a parte local e example.com é a parte do dominio.

  • Local – A parte local dun enderezo de correo electrónico pode conter unha combinación de caracteres alfanuméricos, puntos, guións, signos máis e guións baixos. Normalmente úsase para identificar unha caixa de correo ou unha conta específica nun servidor.
  • Dominio – A parte do dominio dun enderezo de correo electrónico consiste no nome de dominio e o seu dominio de nivel superior (TLD). O nome de dominio é unha cadea de caracteres que identifica o servidor que aloxa a conta de correo electrónico. O TLD especifica o tipo de entidade responsable do nome de dominio, como un código de país (p. ex .uk) ou un dominio xenérico de nivel superior (p. ex .com, .org).

Aínda que esta é a estrutura básica dun enderezo de correo electrónico, as regras para o que constitúe un enderezo de correo electrónico válido son complexas.

Canto tempo pode ter un enderezo de correo electrónico?

Hoxe tiven que facer escavacións para atopalo, pero sabías cal é a lonxitude válida dun enderezo de correo electrónico? En realidade está dividido en partes ... Local@Dominio.com.

  1. Local pode ter de 1 a 64 caracteres.
  2. O dominio pode ter de 1 a 255 caracteres.

Isto significa que, tecnicamente, este pode ser un enderezo de correo electrónico válido:

loremaipsumadolorasitaametbaconsectetueraadipiscin
gaelitanullamc@loremaipsumadolorasitaametbaconsect
etueraadipiscingaelitcaSedaidametusautanisiavehicu
laaluctuscaPellentesqueatinciduntbadiamaidacondimn
tumarutrumbaturpisamassaaconsectetueraarcubaeuatin
ciduntaliberoaaugueavestibulumaeratcaPhasellusatin
ciduntaturpisaduis.com

Proba a colocalo nunha tarxeta de visita! Irónicamente, a maioría dos campos de enderezos de correo electrónico están limitados a 100 caracteres na web... o que é tecnicamente incorrecto. Algunhas das outras expresións regulares utilizadas para validar enderezos de correo electrónico tamén buscan un dominio de nivel superior de 3 díxitos, como .com; con todo, non hai limitación á lonxitude de dominios de primeiro nivel (por exemplo. Martech Zone ten 4 díxitos – .zona).

Expresións regulares

RegEx é un método perfecto para probar un enderezo de correo electrónico debido á súa estrutura programática. As expresións regulares utilízanse amplamente en linguaxes de programación e editores de texto e adoitan estar integradas en bibliotecas ou frameworks de procesamento de texto. Son compatibles con moitas linguaxes de programación, incluíndo Python, Java, C# e JavaScript, entre outros.

A estandarización de enderezos de correo electrónico é moito máis complexa do que pensas. Cando se escribe ao estándar, aquí está a verdadeira expresión regular dun enderezo de correo electrónico, crédito a Regexr:

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

Este patrón de expresión regular coincide co formato básico dun enderezo de correo electrónico, incluíndo caracteres alfanuméricos, puntos, guións, signos máis e guións baixos no nome de usuario, seguidos dun @ símbolo, seguido dun nome de dominio. É importante ter en conta que este patrón só verificará o formato do enderezo de correo electrónico e non o real existencia do enderezo de correo electrónico.

HTML5 inclúe a validación da estrutura do correo electrónico

O medio máis sinxelo para garantir que un correo electrónico sexa válido segundo o estándar é usar un campo de entrada de correo electrónico HTML5:

<input type='email' name='email' placeholder='name@domain.com' />

Non obstante, hai veces que a súa aplicación web aínda quere validar o enderezo de correo electrónico tanto no navegador cando se ingrese como cando se envíe ao servidor.

Regex para un enderezo de correo electrónico adecuado en PHP

Poucas persoas se dan conta, pero agora PHP ten incorporado o estándar RFC función de validación de filtros.

if(filter_var("name@domain.com", FILTER_VALIDATE_EMAIL)) {
    // Valid
}
else {
    // Not Valid
}

Regex para un enderezo de correo electrónico adecuado en C#

Aquí tes a validación básica dun enderezo de correo electrónico en C#

using System;
using System.Text.RegularExpressions;

public class EmailValidator
{
    public static bool IsValidEmail(string email)
    {
        string pattern = @"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$";
        return Regex.IsMatch(email, pattern);
    }
}

Uso práctico deste método:

string email = "example@example.com";
if (EmailValidator.IsValidEmail(email))
{
    Console.WriteLine(email + " is a valid email address.");
}
else
{
    Console.WriteLine(email + " is not a valid email address.");
}

Regex para un enderezo de correo electrónico adecuado en Java

Aquí tes a validación básica dun enderezo de correo electrónico en Java

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class EmailValidator {
    private static final Pattern VALID_EMAIL_ADDRESS_REGEX = 
        Pattern.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$", Pattern.CASE_INSENSITIVE);

    public static boolean isValidEmail(String email) {
        Matcher matcher = VALID_EMAIL_ADDRESS_REGEX .matcher(email);
        return matcher.find();
    }
}

Uso práctico deste método:

String email = "example@example.com";
if (EmailValidator.isValidEmail(email)) {
    System.out.println(email + " is a valid email address.");
} else {
    System.out.println(email + " is not a valid email address.");
}

Regex para un enderezo de correo electrónico adecuado en Python

Aquí tes unha validación básica dun enderezo de correo electrónico en Python:

import re

def is_valid_email(email):
    pattern = re.compile(r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$')
    return True if pattern.match(email) else False

Uso práctico deste método:

email = "example@example.com"
if is_valid_email(email):
    print(f"{email} is a valid email address.")
else:
    print(f"{email} is not a valid email address.")

Regex para un enderezo de correo electrónico adecuado en JavaScript

Non tes que ter un estándar demasiado complexo para comprobar a estrutura dun enderezo de correo electrónico. Aquí tes un medio sinxelo de usar JavaScript.

function validateEmail(email) 
{
    var re = /\\S+@\\S+/;
    return re.test(email);
}

Por suposto, iso non corresponde ao estándar RFC, polo que pode querer validar cada sección dos datos para asegurarse de que sexan válidos. Esta expresión regular cumprirá con preto do 99.9 % dos enderezos de correo electrónico existentes. Non é totalmente estándar, pero é útil para practicamente calquera proxecto.

function validateEmail(email) 
{
  var re = /^(?:[a-z0-9!#$%&amp;'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&amp;'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/;

  return re.test(email);
}

O crédito por algúns destes exemplos vai a HTML.form.guide.

Douglas Karr

Douglas Karr é CMO de OpenINSIGHTS e o fundador da Martech Zone. Douglas axudou a decenas de startups exitosas de MarTech, axudou na debida dilixencia de máis de 5 millóns de dólares en adquisicións e investimentos en Martech e segue axudando ás empresas a implementar e automatizar as súas estratexias de vendas e mercadotecnia. Douglas é un experto e relator de MarTech en transformación dixital recoñecido internacionalmente. Douglas tamén é autor publicado dunha guía de Dummie e dun libro de liderado empresarial.

artigos relacionados

Botón de volta ao principio
preto

Adblock detectado

Martech Zone pode fornecerche este contido sen ningún custo porque monetizamos o noso sitio mediante ingresos publicitarios, ligazóns de afiliados e patrocinios. Agradeceríamos que elimines o teu bloqueador de anuncios mentres visitas o noso sitio.