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 obrasce s više adresa e-pošte bilo bi dobro napraviti class = ”emailaddress”. Ako imate biblioteku prototype.js (http://www.prototypejs.org) uključeni na stranici možete učiniti nešto poput ovog:

    var valid = true;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$ ('. emailaddress'). svaka (funkcija (e-pošta) {
    if (! filter.test (email.value)) {
    upozorenje (? Molimo navedite važeću adresu e-pošte?);
    email.focus;
    valid = false;
    }
    });
    povratak važeći;

  2. 5
  3. 7

    Sviđa mi se ideja, ali oklijevao bih usvojiti ovaj određeni regularni izraz bez opisa koje pravne adrese e-pošte ne prihvaća i koje ilegalne adrese dopušta.

    Za primjer regularnog izraza koji pristojno obavlja posao uz objašnjenje slučajeva koje ne pokriva, pogledajte ovo:

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

    Moja lična želja je pokrivanje većine jednostavnih slučajeva i izdavanje upozorenja za sve ostalo, a ne odbijanje. Ako Bob stvarno želi sto podnijeti bob@com.museum više nego bob@museum.com, zašto mu ne dopustiti?

    • 8

      Zdravo Reg,

      Možete isprobati regularni izraz koristeći Online Regex Tester.

      Takođe, definitivno se može učiniti još mnogo toga ako želite osigurati e-mail adresa važi u skladu sa RFC.

      Postoji nekoliko razloga da nekome ne dozvolite da unese neispravnu adresu e-pošte:
      1. Nervirat će se na vas kad e-pošta koju su očekivali ne prođe - bez obzira na to jeste li vi krivi što je adresa pogrešno unesena.
      2. Ako je com.museum bila valjana domena i, recimo, Yahoo! upravljali njime - bilo koja adresa e-pošte koja bi se odbila imala bi negativan utjecaj na reputaciju vaše kompanije u vezi s dostavom e-pošte. To bi moglo dovesti do blokiranja svih e-adresa vaše kompanije.
      3. Ako vam je dobavljač usluga e-pošte dozvolio da uđete bob@com.museum, također biste plaćali za svaku e-poštu poslanu na tu adresu e-pošte dok se ona ne odjavi s te adrese zbog odbijanja. Držao bih se podalje od bilo kojeg ESP-a koji bi omogućio takvu nevaljanu adresu e-poš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;
    - S konačnim modifikatorom / i nema potrebe za navođenjem velikog slova.
    - Ne znam ni za koga TLD sa brojevima u sebi.
    Uz napomenu, dozvoljavam TLD do 6 znakova; novi stižu redovito i nikad se ne zna (pa, neki budući mogu imati i brojeve, znam).

  6. 11

    Zdravo,

    Trudim se koristiti ovo u postojećem obliku u stvarnom vremenu, ali čini se da ovo ne provjerava u stvarnom vremenu poput provjere snage vaše lozinke ...

    Ili, jesam li toliko besmislen, a to mi ne ide?

  7. 12

    btw, stvarno mi se sviđa ovo što se događate ovdje, vaši su vodiči vrlo jednostavni, definitivno ću označiti ovaj ...

  8. 13
  9. 16
  10. 17

    Samo mala korekcija: Regularni izraz ima dodatak () + na kraju. Trebalo bi da glasi:

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

    S prvim bi se prihvatile bilo koje dužine TLD-a (što nije suštinski pogrešno kako su drugi istakli, ali ako je to bila namjera, izraz bi mogao biti skraćen).

  11. 18

    Možete li objasniti regularni izraz ovog koda i kako on funkcionira? Takođe o .test - Da li je .test zadana izjava u javascriptu za provjeru stvari kao što ste to učinili u gornjem kodu?

  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}$/;
    vratiti 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}$/;
    vratiti emailPattern.test (id);

    }
    Deepak Rai
    varanasi

  14. 21
  15. 22
  16. 23

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

    test @ test

    i prošao je regularni izraz ... Primijetio sam da mu nedostaje bijeg od "." 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% precizna, na primjer, ovo bi bilo u redu john_doe. @ gmail.com što zapravo nije važeća adresa e-pošte (tačka nije dozvoljena kao zadnji znak u lokalnom dijelu e-pošte).
    Takođe bi prihvatila john…doe@gmail.com što je također nevaljano jer u nizu ne može biti više od jedne tačke.

    Ovo su samo neke mane koje sam primijetio na prvi pogled.
    Moja namjera nije sramota samo da bih ukazala na ovo u slučaju da neko to planira koristiti kao sigurnosnu provjeru - nedovoljno sigurnu.

    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 bijeg za točku („.“). Dakle, vaša funkcija trebala bi biti:

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

    }

    U suprotnom, tačka bi značila "bilo koji znak". Vjerujem da od takvih posebnih likova treba pobjeći.

    Pozdrav,

    Federico

  20. 29

    funkcija validateEmail (fld) {
    var greška = ””;
    var tfld = trim (fld.value); // vrijednost polja s odsječenim razmakom
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    var illeChars = / [(),;: \ ”[]] /;

    if (fld.value == “Unesite svoju adresu e-pošte”) {

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

    error = "Unesite važeću adresu e-pošte.n";
    } else if (fld.value.match (legalChars)) {

    error = "Unesite važeću adresu e-pošte.n";
    }
    povratna greška;
    }

  21. 30

    funkcija validateEmail (fld) {
    var greška = ””;
    var tfld = trim (fld.value); // vrijednost polja s odsječenim razmakom
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    var illeChars = / [(),;: \ ”[]] /;

    if (fld.value == “Unesite svoju adresu e-pošte”) {

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

    error = "Unesite važeću adresu e-pošte.n";
    } else if (fld.value.match (legalChars)) {

    error = "Unesite važeću adresu e-pošte.n";
    }
    povratna greška;
    }

  22. 31

    funkcija validateEmail (fld) {
    var greška = ””;
    var tfld = trim (fld.value); // vrijednost polja s odsječenim razmakom
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    var illeChars = / [(),;: \ ”[]] /;

    if (fld.value == “Unesite svoju adresu e-pošte”) {

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

    error = "Unesite važeću adresu e-pošte.n";
    } else if (fld.value.match (legalChars)) {

    error = "Unesite važeću adresu e-pošte.n";
    }
    povratna greška;
    }

  23. 32

    funkcija validateEmail (fld) {
    var greška = ””;
    var tfld = trim (fld.value); // vrijednost polja s odsječenim razmakom
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    var illeChars = / [(),;: \ ”[]] /;

    if (fld.value == “Unesite svoju adresu e-pošte”) {

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

    error = "Unesite važeću adresu e-pošte.n";
    } else if (fld.value.match (legalChars)) {

    error = "Unesite važeću 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.