E-posbemarking en e-posbemarkingsautomatiseringCRM- en dataplatforms

Hoe om 'n e-posadres met gereelde uitdrukkings te bekragtig (Regex)

Feitlik elke programmeertaal ondersteun deesdae gereelde uitdrukkings. Alhoewel sommige ontwikkelaars nie van hulle hou nie, is dit werklik 'n beste praktyk, aangesien hulle gewoonlik funksies soos validering uiters vinnig uitvoer met minder bedienerhulpbronne. E-posadresse is 'n perfekte voorbeeld ... waar hulle maklik nagegaan kan word om te verseker dat hulle behoorlik geformateer is.

Hou in gedagte dat validering nie is nie verifikasie. Validasie beteken eenvoudig dat die data wat deurgegee word, 'n standaardformaat volg wat behoorlik saamgestel is. 'n Paar interessante dinge oor e-posadresse wat gemis kan word tydens validering.

Hoe lank kan 'n e-posadres wees?

Ek moes vandag grawe om dit op te spoor, maar het u geweet wat die geldige lengte van 'n e-posadres is? Dit is eintlik in dele opgebreek ... Naam@Domein.com. Dit is volgens RFC2822.

  1. Naam kan 1 tot 64 karakters bevat.
  2. Domein kan 1 tot 255 karakters bevat.

Dit beteken dat dit 'n geldige e-posadres kan wees:

loremaipsumadolorasitaametbaconsectetueraadipiscin
gaelitanullamc@loremaipsumadolorasitaametbaconsect
etueraadipiscingaelitcaSedaidametusautanisiavehicu
laaluctuscaPellentesqueatinciduntbadiamaidacondimn
tumarutrumbaturpisamassaaconsectetueraarcubaeuatin
ciduntaliberoaaugueavestibulumaeratcaPhasellusatin
ciduntaturpisaduis.com

Probeer om dit op 'n besigheidskaartjie te pas! Ironies genoeg is die meeste e-posadresvelde beperk tot 100 karakters op die web ... wat tegnies verkeerd is. Sommige van die ander gereelde uitdrukkings wat gebruik word om e-posadresse te valideer, soek ook 'n 3-syfer-topvlakdomein, soos .com; daar is egter geen beperking op die lengte van topvlakdomeine (bv. Martech Zone het 4 syfers – .zone).

E-posadresstandaardisering is baie meer kompleks as wat jy besef. Wanneer dit volgens die standaard geskryf is, is hier die ware gereelde uitdrukking vir 'n e-posadres, krediet aan 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])?

HTML5 het nie eens validering nodig nie

Die maklikste manier om te verseker dat 'n e-pos volgens die standaard geldig is, is deur 'n HTML5-e-posinvoerveld te gebruik:

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

Daar is egter tye dat jou webtoepassing steeds die e-posadres in die blaaier wil bekragtig wanneer dit ingevoer word en wanneer dit by jou bediener ingedien word.

Regex vir 'n behoorlike e-posadres in PHP

Min mense besef dit, maar PHP het nou die RFC-standaard ingebou filter validasie funksie.

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

Regex vir 'n behoorlike e-posadres in Javascript

Jy hoef nie 'n te komplekse standaard te hê om 'n e-posadresstruktuur na te gaan nie. Hier is 'n eenvoudige manier om JavaScript te gebruik.

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

Dit is natuurlik nie volgens die RFC-standaard nie, so jy wil dalk elke afdeling van die data valideer om te verseker dat dit geldig is. Hierdie gereelde uitdrukking sal aan ongeveer 99.9% van e-posadresse daar buite voldoen. Dit is nie heeltemal op standaard nie, maar dit is nuttig vir feitlik enige projek.

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

Krediet vir hierdie voorbeelde gaan aan HTML.vorm.gids.

Douglas Karr

Douglas Karr is die stigter van die Martech Zone en erkende kenner van digitale transformasie. Doug is 'n Hoofspreker en bemarking van openbare spreker. Hy is die VP en medestigter van Highbridge, 'n onderneming wat spesialiseer in ondernemingsondernemings om hul tegnologie-belegging digitaal te transformeer en te maksimeer met behulp van Salesforce-tegnologieë. Hy het digitale bemarkings- en produkstrategieë vir Dell Technologies, GoDaddy, Sales Force, Webneigings, en SlimFOKUS. Douglas is ook die skrywer van Korporatiewe blogging vir dummies en mede-outeur van Die beter sakeboek.

verwante Artikels

41 Comments

  1. Vir vorms met veelvuldige e-posadresse, sal dit goed wees om klas=”e-posadres” te doen. As jy die prototype.js-biblioteek (http://www.prototypejs.org) wat op die bladsy ingesluit is, kan jy so iets doen:

    var geldig = waar;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$('.emailaddress').each(funksie(e-pos) {
    if (!filter.toets(e-pos.waarde)) {
    waarskuwing(? Verskaf asseblief 'n geldige e-posadres?);
    e-pos.fokus;
    geldig = onwaar;
    }
    });
    terugkeer geldig;

  2. Ek hou van die idee, maar ek sal huiwerig wees om hierdie spesifieke gereelde uitdrukking aan te neem sonder om te beskryf watter wettige e-posadresse dit nie aanvaar nie en watter onwettige adresse dit toelaat.

    Vir 'n voorbeeld van 'n gewone uitdrukking wat 'n ordentlike werk doen saam met 'n verduideliking van watter gevalle dit nie dek nie, sien hierdie:

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

    My persoonlike voorkeur is om die meeste van die eenvoudige gevalle te dek en 'n waarskuwing vir al die ander uit te reik eerder as om dit te verwerp. As Bob regtig wil sto indien bob@com.museum eerder as bob@museum.com, hoekom laat hom nie toe nie?

    1. Hallo Reg,

      Jy kan die Regex toets deur gebruik te maak van 'n Aanlyn Regex-toetser.

      Daar is ook beslis baie meer wat gedoen kan word as jy wil verseker dat 'n e-pos adres is geldig in ooreenstemming met die RFC.

      Daar is 'n paar redes om iemand nie toe te laat om 'n ongeldige e-posadres in te voer nie:
      1. Hulle sal vir jou vererg wanneer die e-pos wat hulle verwag het nie deurkom nie – ongeag of dit jou skuld was of nie die adres is verkeerd ingevoer.
      2. As com.museum 'n geldige domein was en, kom ons sê, Yahoo! het dit bedryf – enige e-posadres wat geweier het, sal 'n negatiewe impak hê op jou maatskappy se reputasie vir e-posaflewering. Dit kan daartoe lei dat al jou maatskappy se e-pos geblokkeer word.
      3. As jou e-pos diensverskaffer jou toegelaat het om in te gaan bob@com.museum, sal jy ook betaal vir elke e-pos wat na daardie e-posadres gestuur word totdat hulle daardie adres uitgeteken het weens weierings. Ek sal wegbly van enige ESP wat so 'n ongeldige e-posadres toelaat – hulle vat net jou geld!

      Dankie dat jy opgehou het!
      Doug

  3. Daar is baie eenvoudiger manier om die uitdrukking te skryf:
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    – Met die finale wysiger /i is dit nie nodig om die hoofletterreeks aan te dui nie.
    – Ek weet nie van enige nie TLD met nommers daarin.
    Op 'n kantnoot laat ek wel TLD toe met tot 6 chars; nuwes kom gereeld aan en jy weet nooit (wel, sommige toekomstiges kan selfs nommers in hê, ek weet).

  4. Hi daar,

    Ek probeer dit in 'n bestaande vorm intyds gebruik, maar dit lyk nie of dit intyds bekragtig word soos jou wagwoordsterktetoetser nie ...

    Of is ek net so clueless, en dit werk nie vir my nie?

  5. Net 'n klein regstelling: Die gereelde uitdrukking het 'n ekstra ()+ aan die einde. Dit moet lees:

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

    Met die eerste een sal enige lengte TLD's aanvaar word (wat nie intrinsiek verkeerd is soos ander uitgewys het nie, maar as dit die bedoeling was, kan die uitdrukking verkort word).

  6. Kan jy asseblief die gereelde uitdrukking van hierdie kode verduidelik en hoe dit werk? Ook oor .test – Is .test 'n verstekstelling in javascript om dinge na te gaan soos jy in die kode hierbo gedoen het?

  7. Dit is 'n kort kode vir e-pos uitdrukking-

    funksie validateEmail(id)
    {
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
    terugkeer emailPattern.test(id);

    }
    Deepak Rai
    Varanasi

  8. Dit is 'n kort kode vir e-pos uitdrukking-

    funksie validateEmail(id)
    {
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
    terugkeer emailPattern.test(id);

    }
    Deepak Rai
    Varanasi

  9. Dankie, maar daar is 'n fout in hierdie regeks. Ek is nie 'n regex-kenner nie, maar ek het e-pos probeer:

    toets@toets

    en dit het die regex geslaag ... Ek het opgemerk dit ontbreek die "." so moet dit wees:

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

  10. Wel, dit is net 'n rowwe ondersoek, maar nie 100% akkuraat nie, dit sal byvoorbeeld goed wees john_doe.@gmail.com wat eintlik nie 'n geldige e-posadres is nie (kolletjie word nie as 'n laaste karakter in die plaaslike deel van e-pos toegelaat nie).
    Dit sou ook aanvaar john…doe@gmail.com wat ook ongeldig is aangesien daar nie meer as een punt in 'n ry kan wees nie.

    Dit is net 'n paar foute wat ek met die eerste oogopslag opgemerk het.
    My bedoeling is nie net om dit uit te wys as iemand van plan is om dit as 'n sekuriteitskontrole te gebruik nie - nie veilig genoeg nie.

    Vir inligting oor geldige e-posadresse, kyk hierna: http://en.wikipedia.org/wiki/E-mail_address

  11. Deepak,

    Eintlik dink ek jy moet 'n ontsnapping vir die kolletjie (“.”) toepas. Dus, jou funksie moet eerder wees:

    funksie validateEmail(id)
    {
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
    terugkeer emailPattern.test(id);

    }

    Andersins sou die kolletjie "enige karakter" beteken. Ek glo sulke spesiale karakters moet ontsnap word.

    Groete,

    Federico

  12. function validateEmail(fld) {
    var error="";
    var tfld = trim(fld.waarde); // waarde van veld met witspasie afgesny
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

    if (fld.value == “Voer jou e-posadres in”) {

    error = "Voer asseblief jou e-posadres in.n";
    } anders as (!emailFilter.test(tfld)) {//toets e-pos vir onwettige karakters

    error = "Voer asseblief 'n geldige e-posadres in.n";
    } anders as (fld.value.match(illegalChars)) {

    error = "Voer asseblief 'n geldige e-posadres in.n";
    }
    terugkeer fout;
    }

  13. function validateEmail(fld) {
    var error="";
    var tfld = trim(fld.waarde); // waarde van veld met witspasie afgesny
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

    if (fld.value == “Voer jou e-posadres in”) {

    error = "Voer asseblief jou e-posadres in.n";
    } anders as (!emailFilter.test(tfld)) {//toets e-pos vir onwettige karakters

    error = "Voer asseblief 'n geldige e-posadres in.n";
    } anders as (fld.value.match(illegalChars)) {

    error = "Voer asseblief 'n geldige e-posadres in.n";
    }
    terugkeer fout;
    }

  14. function validateEmail(fld) {
    var error="";
    var tfld = trim(fld.waarde); // waarde van veld met witspasie afgesny
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

    if (fld.value == “Voer jou e-posadres in”) {

    error = "Voer asseblief jou e-posadres in.n";
    } anders as (!emailFilter.test(tfld)) {//toets e-pos vir onwettige karakters

    error = "Voer asseblief 'n geldige e-posadres in.n";
    } anders as (fld.value.match(illegalChars)) {

    error = "Voer asseblief 'n geldige e-posadres in.n";
    }
    terugkeer fout;
    }

  15. function validateEmail(fld) {
    var error="";
    var tfld = trim(fld.waarde); // waarde van veld met witspasie afgesny
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

    if (fld.value == “Voer jou e-posadres in”) {

    error = "Voer asseblief jou e-posadres in.n";
    } anders as (!emailFilter.test(tfld)) {//toets e-pos vir onwettige karakters

    error = "Voer asseblief 'n geldige e-posadres in.n";
    } anders as (fld.value.match(illegalChars)) {

    error = "Voer asseblief 'n geldige e-posadres in.n";
    }
    terugkeer fout;
    }

Wat dink jy?

Hierdie webwerf gebruik Akismet om spam te verminder. Leer hoe jou opmerking verwerk is.

Terug na bo knoppie