Provjerite adresu e-pošte s JavaScriptom i regularnim izrazima

Prije nekog vremena stavio sam a Provjera snage lozinke pomoću JavaScript-a i regularnih izraza. U istoj bilješci možete provjeriti i strukturu adrese e-pošte koristeći istu metodologiju regularnog izraza (regularni izraz).

Ako vaš element obrasca ima id = ”adresa e-pošte” i dodate obrazac onSubmit = ”return checkEmail ();“, Ovo je Javascript funkcija koju možete koristiti za vraćanje upozorenja ako adresa e-pošte ima valjanu strukturu ili 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 provjerava sadržaj e-pošte u odnosu na sadržaj filtra. Ako usporedba ne uspije, pojavit će se upozorenje i fokus se vraća u polje adrese e-pošte!

41 Komentari

  1. 1

    Za formulare sa više adresa e-pošte bilo bi dobro uraditi class=”emailaddress”. Ako imate prototype.js biblioteku (http://www.prototypejs.org) uključeno na stranicu možete učiniti nešto poput ovoga:

    var valid = istina;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$('.emailaddress').each( function(email) {
    if (!filter.test(email.value)) {
    alert(?Molimo navedite ispravnu adresu e-pošte?);
    email.focus;
    validno = lažno;
    }
    });
    povratak validan;

  2. 5
  3. 7

    Sviđa mi se ideja, ali bih oklevao da usvojim ovaj određeni regularni izraz bez opisa koje legalne adrese e-pošte ne prihvata i koje ilegalne adrese dozvoljava.

    Za primjer regularnog izraza koji radi pristojan posao uz objašnjenje koje slučajeve ne pokriva, pogledajte ovo:

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

    Moja lična preferencija je da pokrijem većinu jednostavnih slučajeva i izdam upozorenje za sve ostalo umjesto da to odbijem. Ako Bob stvarno želi da se pokori bob@com.museum više nego bob@museum.com, zašto mu ne dozvoliti?

    • 8

      Zdravo Reg,

      Možete testirati Regex koristeći an Online Regex Tester.

      Takođe, definitivno postoji mnogo više što se može učiniti ako želite da osigurate e-mail adresa važi u skladu sa RFC-om.

      Postoji nekoliko razloga da ne dozvolite nekome da unese nevažeću adresu e-pošte:
      1. Iznerviraće se na vas kada e-mail koji su očekivali ne prođe – bez obzira da li ste vi krivi što je adresa pogrešno uneta.
      2. Ako je com.museum bio važeći domen i, recimo, Yahoo! upravljao njome – svaka adresa e-pošte koja je odbijena imala bi negativan uticaj na reputaciju vaše kompanije za isporuku e-pošte. To može dovesti do blokiranja svih e-poruka vaše kompanije.
      3. Ako vam je provajder usluga e-pošte dozvolio ulazak bob@com.museum, također ćete platiti za svaku e-poštu poslanu na tu adresu e-pošte sve dok ne otkaže pretplatu na tu adresu zbog odbijanja. Ja bih se klonio bilo kakvog ESP-a koji bi dozvolio nevažeću adresu e-pošte poput te – oni samo uzimaju vaš novac!

      Hvala što ste svratili!
      Doug

  4. 9
  5. 10

    Postoji mnogo jednostavniji način za pisanje izraza:
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    – Sa završnim modifikatorom /i nema potrebe za označavanjem raspona velikih slova.
    – Ne znam ni za jednu TLD sa brojevima u njemu.
    Uz napomenu, dozvoljavam TLD sa do 6 znakova; novi stižu redovno i nikad se ne zna (pa, neki budući možda imaju i brojeve, znam).

  6. 11

    Zdravo,

    Pokušavam da koristim ovo u postojećem obliku u realnom vremenu, ali izgleda da se ovo ne potvrđuje u realnom vremenu kao što je vaša provera jačine lozinke…

    Ili, jesam li samo toliko neupućen, i ne radi mi to?

  7. 12

    btw, stvarno mi se sviđa šta se dešava ovdje, vaši tutorijali su vrlo jednostavni, definitivno ću označiti ovaj....

  8. 13
  9. 16
  10. 17

    Samo mala ispravka: regularni izraz ima dodatni ()+ na kraju. Trebalo bi da glasi:

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

    Sa prvim TLD-ovi bilo koje dužine bi bili prihvaćeni (što nije suštinski pogrešno kao što su drugi istakli, ali ako je to bila namjera, izraz bi se mogao skratiti).

  11. 18

    Možete li objasniti regularni izraz ovog koda i kako funkcionira? Također o .test – Da li je .test zadana izjava u javascriptu za provjeru stvari kao što ste radili u kodu iznad?

  12. 19

    Ovo je kratki kod za izražavanje e-pošte-

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

    }
    Deepak Rai
    varanasi

  13. 20

    Ovo je kratki kod za izražavanje e-pošte-

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

    }
    Deepak Rai
    varanasi

  14. 21
  15. 22
  16. 23

    Hvala, ali postoji greška u ovom redovnom izrazu. Nisam stručnjak za regularne izraze, ali sam probao e-poštu:

    test@test

    i prošao je regularni izraz... Primetio sam da mu nedostaje izbegavanje "." tako bi trebalo biti:

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

  17. 24
  18. 27

    Pa, ovo je samo gruba provjera, ali ne i 100% tačna, na primjer, ovo bi bilo u redu john_doe.@gmail.com koja zapravo nije važeća e-mail adresa (tačka nije dozvoljena kao posljednji znak u lokalnom dijelu e-pošte).
    Takođe bi prihvatio john…doe@gmail.com što je također nevažeće jer ne može biti više od jedne tačke u nizu.

    Ovo su samo neke mane koje sam primetio na prvi pogled.
    Moja namjera nije samo da ukažem na ovo u slučaju da neko planira ovo koristiti kao sigurnosnu provjeru – nedovoljno sigurno.

    Za informacije o važećim e-mail adresama pogledajte ovo: http://en.wikipedia.org/wiki/E-mail_address

  19. 28

    Deepak,

    Zapravo, mislim da trebate primijeniti escape za tačku (."). Dakle, vaša funkcija bi trebala biti, umjesto toga:

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

    }

    U suprotnom, tačka bi značila "bilo koji znak". Vjerujem da takve posebne znakove treba pobjeći.

    Pozdrav,

    Federico

  20. 29

    funkcija validateEmail(fld) {
    var error=””;
    var tfld = trim(fld.value); // vrijednost polja sa isključenim razmakom
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

    if (fld.value == “Unesite svoju email adresu”) {

    error = “Molimo unesite svoju adresu e-pošte.n”;
    } else if (!emailFilter.test(tfld)) { //testiraj e-poštu na nedozvoljene znakove

    error = “Molimo unesite ispravnu adresu e-pošte.n”;
    } else if (fld.value.match(illegalChars)) {

    error = “Molimo unesite ispravnu adresu e-pošte.n”;
    }
    povratna greška;
    }

  21. 30

    funkcija validateEmail(fld) {
    var error=””;
    var tfld = trim(fld.value); // vrijednost polja sa isključenim razmakom
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

    if (fld.value == “Unesite svoju email adresu”) {

    error = “Molimo unesite svoju adresu e-pošte.n”;
    } else if (!emailFilter.test(tfld)) { //testiraj e-poštu na nedozvoljene znakove

    error = “Molimo unesite ispravnu adresu e-pošte.n”;
    } else if (fld.value.match(illegalChars)) {

    error = “Molimo unesite ispravnu adresu e-pošte.n”;
    }
    povratna greška;
    }

  22. 31

    funkcija validateEmail(fld) {
    var error=””;
    var tfld = trim(fld.value); // vrijednost polja sa isključenim razmakom
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

    if (fld.value == “Unesite svoju email adresu”) {

    error = “Molimo unesite svoju adresu e-pošte.n”;
    } else if (!emailFilter.test(tfld)) { //testiraj e-poštu na nedozvoljene znakove

    error = “Molimo unesite ispravnu adresu e-pošte.n”;
    } else if (fld.value.match(illegalChars)) {

    error = “Molimo unesite ispravnu adresu e-pošte.n”;
    }
    povratna greška;
    }

  23. 32

    funkcija validateEmail(fld) {
    var error=””;
    var tfld = trim(fld.value); // vrijednost polja sa isključenim razmakom
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

    if (fld.value == “Unesite svoju email adresu”) {

    error = “Molimo unesite svoju adresu e-pošte.n”;
    } else if (!emailFilter.test(tfld)) { //testiraj e-poštu na nedozvoljene znakove

    error = “Molimo unesite ispravnu adresu e-pošte.n”;
    } else if (fld.value.match(illegalChars)) {

    error = “Molimo unesite ispravnu adresu e-pošte.n”;
    }
    povratna greška;
    }

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

Šta ti misliš?

Ova stranica koristi Akismet kako bi smanjila neželjenu poštu. Saznajte kako se podaci vašeg komentara obrađuju.