Preverite e-poštni naslov z JavaScriptom in regularnimi izrazi

Pred časom sem postavil a Preverjanje moči gesla z uporabo JavaScript in regularnih izrazov. Na isti opombi lahko tudi preverite strukturo e-poštnega naslova z uporabo iste metodologije regularnih izrazov.

Če ima element vašega obrazca id = ”e-poštni naslov” in dodate obrazec onSubmit = ”return checkEmail ();“, To je funkcija Javascript, s katero lahko vrnete opozorilo, če ima e-poštni naslov veljavno strukturo ali ne:

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

Funkcija potrdi vsebino e-poštnega sporočila glede na vsebino filtra. Če primerjava ne uspe, se prikaže opozorilo in fokus vrne nazaj v polje e-poštnega naslova!

41 Komentarji

  1. 1

    Za obrazce z več e-poštnimi naslovi bi bilo dobro narediti class = ”emailaddress”. Če imate knjižnico prototype.js (http://www.prototypejs.org) na strani lahko naredite nekaj takega:

    var velja = res;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$ ('. emailaddress'). vsak (funkcija (e-pošta) {
    if (! filter.test (email.value)) {
    opozorilo (? Prosimo, navedite veljaven e-poštni naslov?);
    email.focus;
    veljavno = napačno;
    }
    });
    vrnitev veljavna;

  2. 5
  3. 7

    Ideja mi je všeč, vendar bi se obotavljal, da bi sprejel ta poseben regularni izraz, ne da bi opisal, katere pravne e-poštne naslove ne sprejema in katere nezakonite naslove dovoljuje.

    Primer regularnega izraza, ki dostojno opravlja delo skupaj z razlago primerov, ki jih ne zajema, je v tem:

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

    Moja osebna želja je, da zajem večino preprostih primerov in namesto tega zavrnem opozorilo za vse ostalo. Če Bob res želi sto oddati bob@com.museum ne bob@museum.com, zakaj mu ne dovolite?

    • 8

      Živjo Reg,

      Regex lahko preizkusite z uporabo Spletni preizkuševalnik izrazov.

      Prav tako je vsekakor mogoče storiti še veliko več, če želite zagotoviti E-poštni naslov velja v skladu z RFC.

      Obstaja nekaj razlogov, da nekomu ne dovolite, da vnese neveljaven e-poštni naslov:
      1. Motili vas bodo, ko e-poštno sporočilo, za katerega so pričakovali, ne bo prišlo - ne glede na to, ali ste bili vi napačno vneseni ali ne.
      2. Če je bila com.museum veljavna domena in recimo Yahoo! upravljal - vsak e-poštni naslov, ki bi se obnovil, bi negativno vplival na ugled vašega podjetja pri dostavi e-pošte. To lahko povzroči blokiranje vseh e-poštnih sporočil vašega podjetja.
      3. Če vam je ponudnik e-poštnih storitev dovolil vstop bob@com.museum, plačali bi tudi za vsako e-poštno sporočilo, poslano na ta e-poštni naslov, dokler se zaradi odbijanja tega naslova niso odjavili. Izogibal bi se kakršnemu koli ESP-ju, ki bi dovoljeval tak neveljaven e-poštni naslov - ti samo jemljejo denar!

      Hvala, da ste se ustavili!
      Doug

  4. 9
  5. 10

    Obstaja veliko preprostejši način za zapis izraza:
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    - S končnim modifikatorjem / i ni treba navajati velikih črk.
    - Ne poznam nobenega TLD s številkami v njem.
    Na stranski opombi dovoljujem TLD do 6 znakov; novi redno prihajajo in nikoli ne veš (no, nekateri bodoči imajo morda celo številke, vem).

  6. 11

    Zdravo,

    Trudim se, da bi to uporabil v obstoječi obliki v realnem času, vendar se zdi, da to ne velja v realnem času, kot je preverjanje moči vašega gesla ...

    Ali pa sem samo tako neveden in mi to ne deluje?

  7. 12
  8. 13
  9. 16
  10. 17

    Le majhen popravek: regularni izraz ima na koncu dodatek () +. V njem naj bi pisalo:

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

    S prvim bi bili sprejeti poljubno dolgi TLD-ji (kar ni bistveno narobe, kot so poudarili drugi, toda če bi bil to namen, bi lahko izraz skrajšali).

  11. 18

    Lahko prosim razložite regularni izraz te kode in kako deluje? Tudi o .test - je .test privzeti stavek v javascriptu za preverjanje stvari, kot ste jih storili v zgornji kodi?

  12. 19

    To je kratka koda za izražanje e-pošte-

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

    }
    Deepak Rai
    varanasi

  13. 20

    To je kratka koda za izražanje e-pošte-

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

    }
    Deepak Rai
    varanasi

  14. 21
  15. 22
  16. 23

    Hvala, vendar je v tem regularnem izrazu napaka. Nisem strokovnjak za regularne izraze, vendar sem poskusil z e-pošto:

    test @ test

    in je opravil regularni izraz ... Opazil sem, da mu manjka ubežanje "." tako bi moralo biti:

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

  17. 24
  18. 27

    No, to je samo groba kontrola, vendar ne 100% natančna, na primer to bi bilo v redu john_doe. @ gmail.com ki dejansko ni veljaven e-poštni naslov (pika ni dovoljena kot zadnji znak v lokalnem delu e-pošte).
    Prav tako bi sprejel john…doe@gmail.com kar je tudi neveljavno, saj v zaporedju ne more biti več kot ena pika.

    To je le nekaj napak, ki sem jih opazil na prvi pogled.
    Moj namen ni, da bi to opozoril samo, če bi kdo to nameraval uporabiti kot varnostni pregled - premalo varen.

    Za informacije o veljavnih e-poštnih naslovih si oglejte to: http://en.wikipedia.org/wiki/E-mail_address

  19. 28

    Deepak,

    Pravzaprav mislim, da morate za piko uporabiti pobeg ("."). Namesto tega mora biti vaša funkcija:

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

    }

    V nasprotnem primeru bi pika pomenila "kateri koli znak". Verjamem, da je treba takim posebnim znakom ubežati.

    S spoštovanjem,

    Federico

  20. 29

    funkcija validateEmail (fld) {
    napaka var = = "";
    var tfld = trim (fld.value); // vrednost polja z odrezanim presledkom
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    var незаконnoChars = / [(),;: \ ”[]] /;

    if (fld.value == “Vnesite svoj e-poštni naslov”) {

    error = "Vnesite svoj e-poštni naslov.n";
    } else if (! emailFilter.test (tfld)) {// preizkusite e-pošto za nedovoljene znake

    error = "Vnesite veljaven e-poštni naslov.n";
    } sicer če (fld.value.match (nezakonite znake)) {

    error = "Vnesite veljaven e-poštni naslov.n";
    }
    vrnitev napake;
    }

  21. 30

    funkcija validateEmail (fld) {
    napaka var = = "";
    var tfld = trim (fld.value); // vrednost polja z odrezanim presledkom
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    var незаконnoChars = / [(),;: \ ”[]] /;

    if (fld.value == “Vnesite svoj e-poštni naslov”) {

    error = "Vnesite svoj e-poštni naslov.n";
    } else if (! emailFilter.test (tfld)) {// preizkusite e-pošto za nedovoljene znake

    error = "Vnesite veljaven e-poštni naslov.n";
    } sicer če (fld.value.match (nezakonite znake)) {

    error = "Vnesite veljaven e-poštni naslov.n";
    }
    vrnitev napake;
    }

  22. 31

    funkcija validateEmail (fld) {
    napaka var = = "";
    var tfld = trim (fld.value); // vrednost polja z odrezanim presledkom
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    var незаконnoChars = / [(),;: \ ”[]] /;

    if (fld.value == “Vnesite svoj e-poštni naslov”) {

    error = "Vnesite svoj e-poštni naslov.n";
    } else if (! emailFilter.test (tfld)) {// preizkusite e-pošto za nedovoljene znake

    error = "Vnesite veljaven e-poštni naslov.n";
    } sicer če (fld.value.match (nezakonite znake)) {

    error = "Vnesite veljaven e-poštni naslov.n";
    }
    vrnitev napake;
    }

  23. 32

    funkcija validateEmail (fld) {
    napaka var = = "";
    var tfld = trim (fld.value); // vrednost polja z odrezanim presledkom
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    var незаконnoChars = / [(),;: \ ”[]] /;

    if (fld.value == “Vnesite svoj e-poštni naslov”) {

    error = "Vnesite svoj e-poštni naslov.n";
    } else if (! emailFilter.test (tfld)) {// preizkusite e-pošto za nedovoljene znake

    error = "Vnesite veljaven e-poštni naslov.n";
    } sicer če (fld.value.match (nezakonite znake)) {

    error = "Vnesite veljaven e-poštni naslov.n";
    }
    vrnitev napake;
    }

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

Kaj menite?

Ta stran uporablja Akismet za zmanjšanje nezaželene pošte. Preberite, kako se vaš komentar obravnava.