Sähköpostimarkkinointi ja sähköpostimarkkinoinnin automatisointiCRM ja tietoalustat

Sähköpostiosoitteen vahvistaminen säännöllisillä lausekkeilla (Regex). Esimerkki HTML5-, PHP-, C#-, Python- ja Java-koodista.

Lähes kaikki ohjelmointikielet tukevat nykyään säännöllisiä lausekkeita. Vaikka jotkut kehittäjät eivät pidä niistä, ne ovat todella paras käytäntö, koska ne suorittavat tyypillisesti toiminnot, kuten validoinnin, erittäin nopeasti pienemmillä palvelinresursseilla. Sähköpostiosoitteet ovat täydellinen esimerkki… missä ne voidaan helposti tarkistaa ja varmistaa, että ne ovat muotoiltu oikein.

Muista, että validointi ei ole todentaminen. Validointi tarkoittaa yksinkertaisesti sitä, että välitetyt tiedot noudattavat standardimuotoa, joka on oikein rakennettu. Mielenkiintoisia asioita sähköpostiosoitteista, jotka voivat jäädä huomaamatta vahvistuksen yhteydessä.

Mikä on sähköpostiosoite?

Sähköpostiosoite, joka on määritetty Internet-viestimuodossa (RFC 5322), koostuu kahdesta pääosasta: paikallisesta osasta ja verkkotunnuksen osasta. Paikallinen osa tulee ennen @ symboli ja verkkotunnuksen osa tulee sen jälkeen. Tässä on esimerkki sähköpostiosoitteesta: example@example.com, Jossa example on paikallinen osa ja example.com on verkkotunnuksen osa.

  • paikallinen – Sähköpostiosoitteen paikallinen osa voi sisältää yhdistelmän aakkosnumeerisia merkkejä, pisteitä, yhdysmerkkejä, plusmerkkejä ja alaviivoja. Sitä käytetään yleensä tunnistamaan tietty postilaatikko tai tili palvelimella.
  • Domain – Sähköpostiosoitteen domain-osa koostuu verkkotunnuksen nimestä ja sen ylätason verkkotunnuksesta (TLD). Verkkotunnuksen nimi on merkkijono, joka tunnistaa sähköpostitiliä isännöivän palvelimen. Aluetunnus määrittää verkkotunnuksen nimestä vastaavan yksikön tyypin, kuten maakoodin (esim .uk) tai yleinen ylätason verkkotunnus (esim .com, .org).

Vaikka tämä on sähköpostiosoitteen perusrakenne, kelvollisen sähköpostiosoitteen säännöt ovat monimutkaiset.

Kuinka kauan sähköpostiosoite voi olla?

Minun piti tehdä kaivaminen tänään löytääkseni sen, mutta tiesitkö, mikä sähköpostiosoitteen pituus on kelvollinen? Se on todella jaettu osiin… Local@Domain.com.

  1. Paikallinen voi olla 1-64 merkkiä pitkä.
  2. Verkkotunnuksessa voi olla 1–255 merkkiä.

Tämä tarkoittaa, että – teknisesti – tämä voi olla kelvollinen sähköpostiosoite:

loremaipsumadolorasitaametbaconsectetueraadipiscin
gaelitanullamc@loremaipsumadolorasitaametbaconsect
etueraadipiscingaelitcaSedaidametusautanisiavehicu
laaluctuscaPellentesqueatinciduntbadiamaidacondimn
tumarutrumbaturpisamassaaconsectetueraarcubaeuatin
ciduntaliberoaaugueavestibulumaeratcaPhasellusatin
ciduntaturpisaduis.com

Yritä sovittaa se käyntikorttiin! Ironista kyllä, useimmat sähköpostiosoitekentät on rajoitettu 100 merkkiin verkossa… mikä on teknisesti väärin. Jotkut muut säännölliset lausekkeet, joita käytetään sähköpostiosoitteiden vahvistamiseen, etsivät myös 3-numeroista ylätason verkkotunnusta, kuten .com; pituutta ei kuitenkaan ole rajoitettu ylätason verkkotunnukset (esim. Martech Zone on 4 numeroa – .zone).

Säännölliset lausekkeet

RegEx on täydellinen tapa testata sähköpostiosoitetta sen ohjelmallisen rakenteensa vuoksi. Säännöllisiä lausekkeita käytetään laajalti ohjelmointikielissä ja tekstieditoreissa, ja ne integroidaan usein tekstinkäsittelykirjastoihin tai kehyksiin. Niitä tukevat monet ohjelmointikielet, mukaan lukien Python, Java, C# ja JavaScript.

Sähköpostiosoitteen standardointi on paljon monimutkaisempaa kuin ymmärrät. Standardin mukaan kirjoitettuna tässä on sähköpostiosoitteen todellinen säännöllinen lauseke, luotto 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])?

Tämä säännöllinen lausekemalli vastaa sähköpostiosoitteen perusmuotoa, mukaan lukien aakkosnumeeriset merkit, pisteet, yhdysmerkit, plusmerkit ja alaviivat käyttäjänimessä, joita seuraa @ symboli, jota seuraa verkkotunnus. On tärkeää huomata, että tämä malli tarkistaa vain sähköpostiosoitteen muodon, ei todellista olemassaolo sähköpostiosoitteesta.

HTML5 sisältää sähköpostirakenteen validoinnin

Helpoin tapa varmistaa sähköpostin kelpoisuus standardin mukaisesti on käyttää HTML5-sähköpostin syöttökenttää:

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

Joskus verkkosovelluksesi kuitenkin haluaa vahvistaa sähköpostiosoitteen sekä selaimessa, kun se syötetään ja kun se lähetetään palvelimellesi.

Regex oikealle sähköpostiosoitteelle PHP:ssä

Harvat ihmiset ymmärtävät sen, mutta PHP:ssä on nyt sisäänrakennettu RFC-standardi suodattimen validointitoiminto.

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

Regex oikealle sähköpostiosoitteelle C#

Tässä on sähköpostiosoitteen perusvahvistus C#:ssa

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);
    }
}

Tämän menetelmän käytännön käyttö:

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 oikealle sähköpostiosoitteelle Javassa

Tässä on Java-sähköpostiosoitteen perustarkistus

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();
    }
}

Tämän menetelmän käytännön käyttö:

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 oikealle sähköpostiosoitteelle Pythonissa

Tässä on perussähköpostiosoitteen vahvistus Pythonissa:

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

Tämän menetelmän käytännön käyttö:

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 oikealle sähköpostiosoitteelle Javascriptissä

Sinulla ei tarvitse olla liian monimutkaista standardia sähköpostiosoitteen rakenteen tarkistamiseen. Tässä on yksinkertainen tapa käyttää JavaScriptiä.

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

Tämä ei tietenkään ole RFC-standardin mukainen, joten saatat haluta tarkistaa jokaisen datan osan varmistaaksesi sen oikeellisuuden. Tämä säännöllinen lauseke noudattaa noin 99.9 % olemassa olevista sähköpostiosoitteista. Se ei ole täysin standardin mukainen, mutta siitä on hyötyä käytännössä kaikissa projekteissa.

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);
}

Joidenkin näistä esimerkeistä saa kiitosta HTML.form.guide.

Douglas Karr

Douglas Karr on Martech Zone ja tunnustettu digitaalisen transformaation asiantuntija. Douglas on auttanut käynnistämään useita menestyneitä MarTech-startuppeja, auttanut yli 5 miljardin dollarin due diligence -tarkastuksessa Martechin hankinnoissa ja investoinneissa ja jatkaa omien alustojensa ja palveluidensa käynnistämistä. Hän on yksi perustajista Highbridge, digitaalisen muutoksen konsulttiyritys. Douglas on myös julkaissut Dummie's-oppaan ja yritysjohtajuuskirjan.

Aiheeseen liittyvät artikkelit

41 Kommentit

  1. Lomakkeille, joissa on useita sähköpostiosoitteita, olisi hyvä tehdä class = ”emailaddress”. Jos sinulla on prototype.js-kirjasto (http://www.prototypejs.org), joka on sivulla, voit tehdä jotain tällaista:

    var valid = tosi;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$ ('. emailaddress'). kukin (funktio (sähköposti) {
    if (! filter.test (email.value)) {
    hälytys (? Anna oikea sähköpostiosoite?);
    email.focus;
    voimassa = väärä;
    }
    });
    palautus voimassa;

  2. Pidän ajatuksesta, mutta epäröin omaksua tämän säännöllisen lausekkeen ilman kuvausta siitä, mitä laillisia sähköpostiosoitteita se ei hyväksy ja mitkä laittomat osoitteet se sallii.

    Katso esimerkki säännöllisestä lausekkeesta, joka tekee kunnollista työtä, selityksen kanssa, mitä tapauksia se ei kata:

    http://www.regular-expressions.info/email.html

    Henkilökohtaisena mieltymykseni on kattaa suurin osa yksinkertaisista tapauksista ja antaa varoitus kaikesta muusta sen sijaan, että hylkääisin sen. Jos Bob todella haluaa lähetyksen bob@com.museum sen sijaan, bob@museum.com, miksi ei anna hänen?

    1. Hei Reg,

      Voit testata Regexiä käyttämällä Online Regex -testari.

      Lisäksi voit varmasti tehdä paljon enemmän, jos haluat varmistaa sähköpostiosoite on voimassa RFC: n mukaisesti.

      On olemassa muutama syy, miksi ei sallita jonkun syöttää virheellistä sähköpostiosoitetta:
      1. Heidät ärsyttävät sinua, kun odottamaasi sähköpostia ei saada läpi - riippumatta siitä, syitkö osoite väärin.
      2. Jos com.museum oli kelvollinen verkkotunnus ja sanotaan Yahoo! käytti sitä - kaikilla palautetuilla sähköpostiosoitteilla olisi kielteinen vaikutus yrityksesi maineeseen sähköpostin jakelussa. Tämä voi johtaa siihen, että kaikki yrityksesi sähköpostit estetään.
      3. Jos sähköpostipalveluntarjoajasi antoi sinulle pääsyn bob@com.museum, maksat myös jokaisesta kyseiseen sähköpostiosoitteeseen lähetetystä sähköpostista, kunnes he peruuttivat kyseisen osoitteen pomppujen takia. Haluaisin välttää kaikki ESP: t, jotka sallivat virheellisen sähköpostiosoitteen - he vain ottavat rahasi!

      Kiitos käynnistä!
      Doug

  3. On paljon yksinkertaisempi tapa kirjoittaa lauseke:
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    - Lopullisella muokkaimella / i ei tarvitse ilmoittaa isoja kirjaimia.
    - En tiedä yhtään TLD jossa on numeroita.
    Sivuhuomautuksena, sallin TLD: n enintään 6 merkillä; uusia saapuu säännöllisesti etkä koskaan tiedä (no, tulevissa sommeissa voi olla jopa numeroita, tiedän).

  4. Moi,

    Pyrin käyttämään tätä olemassa olevassa muodossa reaaliajassa, mutta tämä ei näytä vahvistuvan reaaliajassa, kuten salasanan vahvuuden tarkistin ...

    Vai olenko vain niin avulias, ja se ei toimi minulle?

  5. BTW, pidän todella siitä, mitä täällä olet tekemässä, opetusohjelmasi ovat hyvin yksinkertaisia, aion varmasti lisätä kirjanmerkkeihin tämän….

  6. Vain pieni korjaus: Säännöllisen lausekkeen lopussa on ylimääräinen () +. Sen pitäisi lukea:

    ^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+[a-zA-Z0-9]{2,4}$

    Ensimmäisen kohdalla hyväksytään mikä tahansa pituus TLD: t (mikä ei ole sisäisesti väärin, kuten muut ovat huomauttaneet, mutta jos se oli tarkoitus, lauseketta voitaisiin lyhentää).

  7. Voitteko selittää tämän koodin säännöllisen lausekkeen ja miten se toimii? Myös .testistä - Onko .test oletusselvitys javascriptissä tarkistaaksesi asioita, kuten teit yllä olevassa koodissa?

  8. Tämä on lyhyt koodi sähköpostilausekkeelle-

    function validateEmail (id)
    {
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.
    return emailPattern.test (id);

    }
    Deepak Rai
    Varanasi

  9. Kiitos, mutta tässä regexissä on virhe. En ole regex-asiantuntija, mutta yritin sähköpostia:

    testi testi

    ja se ohitti regexin ... Huomasin, ettei se puutu pakenemaan "." joten sen pitäisi olla:

    /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/

  10. No, tämä on vain karkea tarkistus, mutta ei 100% tarkka, esimerkiksi tämä olisi ok john_doe. @ gmail.com mikä ei todellakaan ole kelvollinen sähköpostiosoite (piste ei ole sallittu viimeisenä merkkinä sähköpostin paikallisessa osassa).
    Myös se hyväksyisi john… doe@gmail.com mikä on myös virheellinen, koska jaksossa voi olla vain yksi piste.

    Nämä ovat vain joitain virheitä, jotka huomasin ensi silmäyksellä.
    Aikomukseni ei ole röyhkeä vain huomauttaa tästä, jos joku aikoo käyttää sitä turvatarkastuksena - ei riittävän turvallinen.

    Lisätietoja voimassa olevista sähköpostiosoitteista saat tästä: http://en.wikipedia.org/wiki/E-mail_address

  11. Deepak,

    Itse asiassa mielestäni sinun on käytettävä pakoa pisteelle ("."). Joten toimintosi pitäisi olla sen sijaan:

    function validateEmail (id)
    {
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.
    return emailPattern.test (id);

    }

    Muussa tapauksessa piste tarkoittaisi mitä tahansa merkkiä. Uskon, että tällaiset erikoishahmot täytyy välttää.

    Terveisin,

    Federico

  12. function validateEmail (fld) {
    var virhe = ””;
    var tfld = leikkaus (fld.arvo); // kentän arvo, jonka välilyönti on leikattu
    var emailFilter = /^[^@] +
    var laitonChars = / [(),;: \ ”[]] /;

    if (fld.value == "Anna sähköpostiosoitteesi") {

    error = "Anna sähköpostiosoitteesi.n";
    } else if (! emailFilter.test (tfld)) {// testaa sähköpostia laittomien merkkien varalta

    error = "Anna kelvollinen sähköpostiosoite.n";
    } else if (fld.value.match (laitonChars)) {

    error = "Anna kelvollinen sähköpostiosoite.n";
    }
    palautusvirhe;
    }

  13. function validateEmail (fld) {
    var virhe = ””;
    var tfld = leikkaus (fld.arvo); // kentän arvo, jonka välilyönti on leikattu
    var emailFilter = /^[^@] +
    var laitonChars = / [(),;: \ ”[]] /;

    if (fld.value == "Anna sähköpostiosoitteesi") {

    error = "Anna sähköpostiosoitteesi.n";
    } else if (! emailFilter.test (tfld)) {// testaa sähköpostia laittomien merkkien varalta

    error = "Anna kelvollinen sähköpostiosoite.n";
    } else if (fld.value.match (laitonChars)) {

    error = "Anna kelvollinen sähköpostiosoite.n";
    }
    palautusvirhe;
    }

  14. function validateEmail (fld) {
    var virhe = ””;
    var tfld = leikkaus (fld.arvo); // kentän arvo, jonka välilyönti on leikattu
    var emailFilter = /^[^@] +
    var laitonChars = / [(),;: \ ”[]] /;

    if (fld.value == "Anna sähköpostiosoitteesi") {

    error = "Anna sähköpostiosoitteesi.n";
    } else if (! emailFilter.test (tfld)) {// testaa sähköpostia laittomien merkkien varalta

    error = "Anna kelvollinen sähköpostiosoite.n";
    } else if (fld.value.match (laitonChars)) {

    error = "Anna kelvollinen sähköpostiosoite.n";
    }
    palautusvirhe;
    }

  15. function validateEmail (fld) {
    var virhe = ””;
    var tfld = leikkaus (fld.arvo); // kentän arvo, jonka välilyönti on leikattu
    var emailFilter = /^[^@] +
    var laitonChars = / [(),;: \ ”[]] /;

    if (fld.value == "Anna sähköpostiosoitteesi") {

    error = "Anna sähköpostiosoitteesi.n";
    } else if (! emailFilter.test (tfld)) {// testaa sähköpostia laittomien merkkien varalta

    error = "Anna kelvollinen sähköpostiosoite.n";
    } else if (fld.value.match (laitonChars)) {

    error = "Anna kelvollinen sähköpostiosoite.n";
    }
    palautusvirhe;
    }

Mitä mieltä olet?

Tämä sivusto käyttää Akismetiä roskapostin vähentämiseksi. Lue, miten kommenttitietosi käsitellään.