Egiaztatu helbide elektronikoa Javascript-ekin eta ohiko adierazpenekin

Duela denbora bat jarri nuen Pasahitz-indarraren egiaztatzailea JavaScript eta adierazpen erregularrak erabiliz. Ohar horretan, helbide elektroniko baten egitura ere egiaztatu dezakezu adierazpen erregularra (regex) metodologia bera erabiliz.

Zure inprimakiaren elementuak badu id = ”helbide elektronikoa” eta inprimaki bat gehitzen duzu onSubmit = ”return checkEmail ();"Helbide elektronikoak baliozko egitura badu edo ez bada, alerta bat itzultzeko erabil dezakezu Javascript funtzioa da:

function checkEmail() {
var email = document.getElementById('emailaddress');
var filter = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
if (!filter.test(email.value)) {
alert('Please provide a valid email address');
email.focus;
return false;
}
}

Funtzioak mezu elektronikoaren edukia iragazkirako balioztatzen du. Konparazioak huts egiten badu, alerta bat irekiko da eta fokua helbide elektronikoko eremura itzuliko da!

41 Comments

  1. 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. 5
  3. 7

    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?

    • 8

      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

  4. 9
  5. 10

    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).

  6. 11

    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?

  7. 12

    Hala ere, asko gustatzen zait hemen gertatzen ari zarena, zure tutorialak oso sinpleak dira, hau laster-marka jarriko dut zalantzarik gabe ....

  8. 13
  9. 16
  10. 17

    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).

  11. 18

    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?

  12. 19

    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

  13. 20

    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

  14. 21
  15. 22
  16. 23

    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})+$/

  17. 24
  18. 27

    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

  19. 28

    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

  20. 29

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

  21. 30

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

  22. 31

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

  23. 32

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

  24. 33
  25. 34
  26. 35
  27. 36
  28. 37
  29. 38
  30. 39
  31. 40

Zer deritzozu?

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