Posta elektronikoko marketina eta posta elektronikoa merkaturatzeko automatizazioaCRM eta Datu Plataformak

Nola balioztatu helbide elektroniko bat adierazpen erregularrekin (Regex)

Ia programazio-lengoaia guztiek onartzen dituzte gaur egun adierazpen erregularrak. Garatzaile batzuei gustatzen ez zaizkien arren, praktika onak dira normalean baliozkotzea bezalako funtzioak oso azkar egiten baitituzte zerbitzari baliabide gutxiagorekin. Helbide elektronikoak adibide ezin hobea dira... non erraz egiaztatu daitezkeen formateatu behar bezala daudela ziurtatzeko.

Kontuan izan baliozkotzea ez dela egiaztapena. Balidatzeak esan nahi du, besterik gabe, emandako datuak behar bezala eraikitako formatu estandarra jarraitzen dutela. Balidazioan galdu daitezkeen helbide elektronikoei buruzko gauza interesgarri batzuk.

Zenbat denbora izan daiteke helbide elektroniko bat?

Aurkikuntza batzuk egin behar izan ditut gaur aurkitzeko, baina ba al zenekien zein den helbide elektronikoaren baliozko luzera? Benetan zatitan zatituta dago ... Izena@Domeinua.com. Honen arabera RFC2822.

  1. Izenak 1 eta 64 karaktere izan ditzake.
  2. Domeinuak 1-255 karaktere izan ditzake.

Horrek esan nahi du baliozko helbide elektroniko bat izan daitekeela:

loremaipsumadolorasitaametbaconsectetueraadipiscin
gaelitanullamc@loremaipsumadolorasitaametbaconsect
etueraadipiscingaelitcaSedaidametusautanisiavehicu
laaluctuscaPellentesqueatinciduntbadiamaidacondimn
tumarutrumbaturpisamassaaconsectetueraarcubaeuatin
ciduntaliberoaaugueavestibulumaeratcaPhasellusatin
ciduntaturpisaduis.com

Saiatu hori bisita-txartel batean sartzen! Ironikoki, helbide elektronikoaren eremu gehienak sarean 100 karakteretara mugatuta daude... eta hori teknikoki okerra da. Helbide elektronikoak balioztatzeko erabiltzen diren beste adierazpen erregular batzuek 3 zifrako goi-mailako domeinu bat ere bilatzen dute, .com adibidez; hala ere, ez dago iraupenaren mugarik goi-mailako domeinuak (Adibidez. Martech Zone 4 digitu ditu – .zona).

Helbide elektronikoen estandarizazioa uste duzuna baino askoz konplexuagoa da. Estandarra idazten denean, hona hemen helbide elektroniko baten benetako adierazpen erregularra, kreditua 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-ek ez du baliozkotzerik behar

Posta elektronikoa estandarraren arabera baliozkoa dela ziurtatzeko bitartekorik errazena HTML5 posta elektronikoko sarrera-eremu bat erabiltzea da:

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

Aldiz, hala ere, zure web aplikazioak helbide elektronikoa balioztatu nahi izango du, bai arakatzailean sartutakoan, bai zerbitzarian bidaltzen duzunean.

Regex helbide elektroniko egoki baterako PHPn

Jende gutxi konturatzen da, baina PHP-k orain RFC estandarra du barneratuta iragazkiak baliozkotzeko funtzioa.

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

Regex Javascript-en helbide elektroniko egokia lortzeko

Ez duzu helbide elektronikoen egitura egiaztatzeko estandar konplexuegirik izan behar. Hona hemen JavaScript erabiltzeko baliabide sinple bat.

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

Noski, hori ez da RFC estandarrarekin, beraz, baliteke datuen atal bakoitza baliozkotu nahi izatea baliozkoa dela ziurtatzeko. Adierazpen erregular honek dauden helbide elektronikoen %99.9 inguru beteko du. Ez da guztiz estandarra, baina ia edozein proiektutarako erabilgarria da.

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

Adibide hauen meritua HTML.inprimaki.gida.

Douglas Karr

Douglas Karr ren sortzailea da Martech Zone eta eraldaketa digitalean aditu aitortua. Doug da Hizlari nagusia eta marketina. VP eta cofundatzailea da Highbridge, enpresa-enpresei Salesforce teknologien bidez digitalki eraldatu eta beren inbertsio teknologikoa maximizatzen laguntzeko espezializatutako enpresa. Marketin digitala eta produktuentzako estrategiak garatu ditu Dell Teknologiak, GoDaddy, Salesforce, Web joerak, eta SmartFOCUS. Douglas-en egilea ere bada Dummiesentzako blog korporatiboa eta egileetako Better Business Book.

Gaiarekin lotutako artikuluak

41 Comments

  1. Helbide elektroniko anitz dituzten inprimakietan, ondo legoke class = "emailaddress" egitea. Prototype.js liburutegia baduzu (http://www.prototypejs.org) orrian sartuta horrelako zerbait egin dezakezu:

    var valid = egia;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$ ('. helbide elektronikoa'). bakoitzak (funtzioa (posta elektronikoa) {
    if (! filter.test (email.value)) {
    alerta (? Mesedez, eman baliozko helbide elektronikoa?);
    email.fokatu;
    baliozkoa = faltsua;
    }
    });
    itzulera baliozkoa;

  2. Ideia gustatzen zait, baina zalantzarik nuke adierazpen erregular zehatz hau onartzerakoan zein helbide elektroniko legez onartzen ez dituen eta zein legez kanpoko helbide baimentzen dituen deskribatu gabe.

    Lan duina egiten duen adierazpen erregular baten adibidea lortzeko, zein kasutan hartzen ez dituen azalpenarekin batera, ikusi hau:

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

    Nire lehentasun pertsonala kasu sinple gehienak estaltzea da, eta baztertu beharrean beste guztientzako abisua ematea. Bobek benetan aurkeztu nahi badu bob@com.museum baino bob@museum.com, zergatik ez utzi?

    1. Kaixo,

      Regex proba bat erabil dezakezu Lineako Erregistro Probatzailea.

      Gainera, zalantzarik gabe, askoz ere gehiago egin daiteke ziurtatu nahi baduzu e-posta helbidea baliozkoa da RFCren arabera.

      Arrazoi batzuk daude norbaiti helbide elektroniko baliogabea sartzen uzteko:
      1. Gogaitu egingo zaituzte espero zuten mezu elektronikoa helarazten ez denean. Zure errua izan den ala ez adierazten du helbidea gaizki sartu denean.
      2. com.museum baliozko domeinua bazen eta, demagun, Yahoo! funtzionatu du - errebotea egin duen edozein helbide elektronikok zure konpainiak mezu elektronikoak emateko duen ospean eragin negatiboa izango luke. Horrek zure enpresaren mezu elektroniko guztiak blokeatzea ekar lezake.
      3. Zure posta elektronikoko zerbitzu hornitzaileak sartzen uzten badizu bob@com.museum, helbide elektroniko horretara bidalitako mezu elektroniko bakoitza ere ordainduko zenuke erreboteak direla eta helbide hori baja eman arte. Horrelako helbide elektroniko baliogabea ahalbidetuko lukeen ESPrik ez nuke aldenduko - zure dirua besterik ez dute hartzen!

      Eskerrik asko gelditzeko!
      Doug

  3. Esamoldea idazteko modu askoz errazagoa dago:
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    - / i azken aldaketarekin ez da letra maiuskula adierazi beharrik.
    - Ez dakit TLD zenbakiekin.
    Ohar batean, TLD baimentzen dut gehienez 6 karakterekin; berriak aldizka iristen dira eta inoiz ez dakizu (beno, etorkizuneko batzuek zenbakiak ere izan ditzakete, badakit).

  4. Kaixo,

    Dagoeneko inprimakian denbora errealean erabiltzea nahi dut, baina ez dirudi denbora errealean baliozkotzen ari denik zure pasahitz indarraren egiaztatzailea bezala ...

    Edo, despistatu hori al naiz, eta ez al da niretzat funtzionatzen?

  5. Zuzenketa txiki bat besterik ez: adierazpen erregularrak extra () + du amaieran. Honako hau esan beharko luke:

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

    Lehenengoarekin edozein luzera TLD onartuko lirateke (hori ez da berezko gaizki beste batzuek adierazi duten bezala, baina hori asmoa balitz esamoldea laburtu liteke).

  6. Azal al dezakezu kode honen ohiko adierazpena eta nola funtzionatzen duen? .Test-i buruz ere. - .test adierazpen lehenetsia al da javascript-en goiko kodean egin zenituen gauzak egiaztatzeko?

  7. Hau mezu elektronikoa adierazteko kode laburra da-

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

    }
    Deepak Rai
    Varanasi

  8. Eskerrik asko, baina erregela honetan akats bat dago. Ez naiz regex aditua, baina posta elektronikoa probatu dut:

    proba @ proba

    eta erregealdia gainditu zuen ... "" -tik ihes egitea falta zitzaiola ohartu nintzen. hala beharko luke:

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

  9. Beno, hau gutxi gorabehera egiaztapena da, baina ez da% 100 zehatza, adibidez ondo egongo litzateke john_doe. @ gmail.com hau da, ez da baliozko helbide elektronikoa (puntua ez da onartzen posta elektronikoaren tokiko azken karaktere gisa).
    Gainera onartuko luke john…doe@gmail.com hau ere baliogabea da, sekuentzia batean puntu bat baino gehiago egon ezin baitaiteke.

    Hauek dira lehen begiratuan antzeman nituen akats batzuk.
    Nire asmoa ez da hori azpimarratzea, norbaitek segurtasun-kontrol gisa erabiltzeko asmoa duen kasuetan, behar bezain segurua ez bada.

    Helbide elektroniko baliodunei buruzko informazioa lortzeko, begiratu hau: http://en.wikipedia.org/wiki/E-mail_address

  10. Deepak,

    Egia esan, uste dut puntuari ihesaldia aplikatu behar diozula ("."). Beraz, zure funtzioak izan beharko luke:

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

    }

    Bestela, puntuak "edozein pertsonaia" esan nahiko luke. Uste dut horrelako pertsonaia bereziek ihes egin behar dutela.

    Regards,

    Federico

  11. funtzioa validateEmail (fld) {
    var error = ””;
    var tfld = moztu (fld.balioa); // eremuaren balioa zuriunea moztuta
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    if (fld.value == "Idatzi zure helbide elektronikoa") {

    error = "Mesedez, idatzi zure helbide elektronikoa.n";
    } else if (! emailFilter.test (tfld)) {// posta elektronikoa legez kanpoko karaktereetarako probatu

    error = "Mesedez, sartu baliozko helbide elektronikoa.n";
    } else if (fld.value.match (illegalChars)) {

    error = "Mesedez, sartu baliozko helbide elektronikoa.n";
    }
    itzultzeko errorea;
    }

  12. funtzioa validateEmail (fld) {
    var error = ””;
    var tfld = moztu (fld.balioa); // eremuaren balioa zuriunea moztuta
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    if (fld.value == "Idatzi zure helbide elektronikoa") {

    error = "Mesedez, idatzi zure helbide elektronikoa.n";
    } else if (! emailFilter.test (tfld)) {// posta elektronikoa legez kanpoko karaktereetarako probatu

    error = "Mesedez, sartu baliozko helbide elektronikoa.n";
    } else if (fld.value.match (illegalChars)) {

    error = "Mesedez, sartu baliozko helbide elektronikoa.n";
    }
    itzultzeko errorea;
    }

  13. funtzioa validateEmail (fld) {
    var error = ””;
    var tfld = moztu (fld.balioa); // eremuaren balioa zuriunea moztuta
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    if (fld.value == "Idatzi zure helbide elektronikoa") {

    error = "Mesedez, idatzi zure helbide elektronikoa.n";
    } else if (! emailFilter.test (tfld)) {// posta elektronikoa legez kanpoko karaktereetarako probatu

    error = "Mesedez, sartu baliozko helbide elektronikoa.n";
    } else if (fld.value.match (illegalChars)) {

    error = "Mesedez, sartu baliozko helbide elektronikoa.n";
    }
    itzultzeko errorea;
    }

  14. funtzioa validateEmail (fld) {
    var error = ””;
    var tfld = moztu (fld.balioa); // eremuaren balioa zuriunea moztuta
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    if (fld.value == "Idatzi zure helbide elektronikoa") {

    error = "Mesedez, idatzi zure helbide elektronikoa.n";
    } else if (! emailFilter.test (tfld)) {// posta elektronikoa legez kanpoko karaktereetarako probatu

    error = "Mesedez, sartu baliozko helbide elektronikoa.n";
    } else if (fld.value.match (illegalChars)) {

    error = "Mesedez, sartu baliozko helbide elektronikoa.n";
    }
    itzultzeko errorea;
    }

Zer deritzozu?

Gune honek Akismet-ek spam erabiltzen du. Ikasi zure iruzkina nola prozesatu den.

Itzuli gora botoia