Kontrolloni adresën e postës elektronike me JavaScript dhe Shprehje të Rregullta

Pak më parë kam vendosur një Kontrolluesi i forcës së fjalëkalimit duke përdorur JavaScript dhe Shprehjet e Rregullta. Në të njëjtën shënim, ju gjithashtu mund të kontrolloni strukturën e një adrese email duke përdorur të njëjtën metodologji të shprehjes së rregullt (regex).

Nëse elementi juaj i formës ka id = "adresë emaili" dhe ju shtoni një formë onSubmit = ”check checkEmail ();“, Ky është një funksion Javascript që mund ta përdorni për të kthyer një sinjalizim nëse adresa e emailit ka një strukturë të vlefshme ose jo:

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

Funksioni vërteton përmbajtjen e postës elektronike në atë të filtrit. Nëse krahasimi dështon, ai shfaqet një alarm dhe kthen fokusin përsëri në fushën e adresës së postës elektronike!

41 Comments

  1. 1

    Për formularët me adresa të shumta emaili, do të ishte mirë të bënit class=”emailaddress”. Nëse keni bibliotekën prototype.js (http://www.prototypejs.org) e përfshirë në faqe mund të bëni diçka si kjo:

    var valid = e vërtetë;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$('.adresa e emailit').secili (funksioni(email) {
    if (!filter.test(email.value)) {
    alarm (?Ju lutemi jepni një adresë të vlefshme emaili?);
    email.fokus;
    i vlefshëm = i rremë;
    }
    });
    kthimi i vlefshëm;

  2. 5
  3. 7

    Më pëlqen ideja, por do të nguroja të miratoja këtë shprehje të rregullt të veçantë pa përshkrim se cilat adresa emaili legale nuk i pranon dhe cilat adresa të paligjshme i lejon.

    Për një shembull të një shprehjeje të rregullt që bën një punë të mirë krahas një shpjegimi se cilat raste nuk mbulon, shihni këtë:

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

    Preferenca ime personale është të mbuloj shumicën e rasteve të thjeshta dhe të jap një paralajmërim për çdo gjë tjetër në vend që ta refuzoj atë. Nëse Bob vërtet dëshiron të dorëzohet bob@com.museum në vend se bob@museum.com, pse të mos e lejosh?

    • 8

      Përshëndetje Reg,

      Ju mund të provoni Regex duke përdorur një Tester Regex në internet.

      Gjithashtu, ka shumë më tepër që mund të bëhet nëse doni të siguroni një adresë e-mail është e vlefshme në përputhje me RFC.

      Ka disa arsye për të mos lejuar dikë të fusë një adresë emaili të pavlefshme:
      1. Ata do të mërziten me ju kur emaili që ata prisnin nuk do t'ju marrë - pavarësisht nëse ishte apo jo faji juaj që adresa ishte futur gabimisht.
      2. Nëse com.museum ishte një domen i vlefshëm dhe, le të themi, Yahoo! e përdori atë – çdo adresë e-mail që u kthye do të kishte një ndikim negativ në reputacionin e kompanisë suaj për dërgimin e emailit. Kjo mund të çojë në bllokimin e të gjithë email-eve të kompanisë suaj.
      3. Nëse ofruesi juaj i shërbimit të postës elektronike ju ka lejuar të hyni bob@com.museum, do të paguani gjithashtu për çdo email të dërguar në atë adresë emaili derisa ata të çabonin atë adresë për shkak të kthimeve. Unë do të largohesha nga çdo ESP që do të lejonte një adresë emaili të pavlefshme si kjo - ata thjesht po ju marrin paratë!

      Faleminderit për ndalimin nga!
      Doug

  4. 9
  5. 10

    Ka një mënyrë shumë më të thjeshtë për të shkruar shprehjen:
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    – Me modifikuesin përfundimtar /i, nuk ka nevojë të tregohet diapazoni i shkronjave të mëdha.
    – Nuk di asnjë TLD me numra në të.
    Në një shënim anësor, unë lejoj TLD me deri në 6 karaktere; të reja mbërrijnë rregullisht dhe nuk i dihet kurrë (epo, disa të ardhme mund të kenë edhe numra, e di).

  6. 11

    Hi there,

    Unë po përpiqem ta përdor këtë në një formë ekzistuese në kohë reale, por kjo nuk duket se po vërtetohet në kohë reale si kontrolluesi i fuqisë së fjalëkalimit tuaj…

    Apo, jam kaq i paditur dhe nuk funksionon për mua?

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

    Vetëm një korrigjim i vogël: Shprehja e rregullt ka një shtesë ()+ në fund. Duhet të lexohet:

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

    Me të parën do të pranoheshin TLD-të e çdo gjatësie (gjë që nuk është thelbësisht e gabuar siç kanë theksuar të tjerët, por nëse ky ishte qëllimi, shprehja mund të shkurtohej).

  11. 18

    A mund të shpjegoni shprehjen e rregullt të këtij kodi dhe si funksionon ai? Gjithashtu për .test – A është .test një deklaratë e paracaktuar në javascript për të kontrolluar gjërat siç keni bërë në kodin e mësipërm?

  12. 19
  13. 20

    Ky është një kod i shkurtër për shprehjen e emailit-

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

    }
    Deepak Rai
    Varanasi

  14. 21
  15. 22
  16. 23

    Faleminderit, por ka një gabim në këtë regex. Unë nuk jam një ekspert regex, por provova email:

    test@test

    dhe e kaloi regeksin... Vura re se i mungonte ikja nga "." kështu duhet të jetë:

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

  17. 24
  18. 27

    Epo, ky është vetëm një kontroll i përafërt, por jo 100% i saktë, për shembull, kjo do të ishte në rregull john_doe.@gmail.com e cila në fakt nuk është një adresë e vlefshme e-mail (pika nuk lejohet si karakter i fundit në pjesën lokale të e-mail).
    Gjithashtu do të pranonte john…doe@gmail.com e cila është gjithashtu e pavlefshme pasi nuk mund të ketë më shumë se një pikë në një sekuencë.

    Këto janë vetëm disa të meta që i vura re në shikim të parë.
    Synimi im nuk është të turpërohem vetëm për ta vënë në dukje këtë në rast se dikush po planifikon ta përdorë këtë si një kontroll sigurie – jo mjaftueshëm i sigurt.

    Për informacion në lidhje me adresat e vlefshme të emailit, shikoni këtë: http://en.wikipedia.org/wiki/E-mail_address

  19. 28

    Deepak,

    Në fakt, unë mendoj se ju duhet të aplikoni një arratisje për pikën (“”). Pra, funksioni juaj duhet të jetë, në vend të kësaj:

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

    }

    Përndryshe, pika do të thoshte "çdo personazh". Unë besoj se personazheve të tillë të veçantë duhet t'u shpëtojmë.

    Regards,

    Federico

  20. 29

    funksion validateEmail(fld) {
    var gabim=””;
    var tfld = trim(fld.vlera); // vlera e fushës me hapësirën e bardhë të shkurtuar
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var ilegaleChars= /[(),;:\”[]]/ ;

    if (fld.value == "Fut adresën tuaj të emailit") {

    gabim = “Ju lutemi shkruani adresën tuaj të emailit.n”;
    } else if (!emailFilter.test(tfld)) { //test email për karaktere të paligjshme

    gabim = “Ju lutemi shkruani një adresë të vlefshme emaili.n”;
    } else if (fld.value.match(ilegalChars)) {

    gabim = “Ju lutemi shkruani një adresë të vlefshme emaili.n”;
    }
    gabim kthimi;
    }

  21. 30

    funksion validateEmail(fld) {
    var gabim=””;
    var tfld = trim(fld.vlera); // vlera e fushës me hapësirën e bardhë të shkurtuar
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var ilegaleChars= /[(),;:\”[]]/ ;

    if (fld.value == "Fut adresën tuaj të emailit") {

    gabim = “Ju lutemi shkruani adresën tuaj të emailit.n”;
    } else if (!emailFilter.test(tfld)) { //test email për karaktere të paligjshme

    gabim = “Ju lutemi shkruani një adresë të vlefshme emaili.n”;
    } else if (fld.value.match(ilegalChars)) {

    gabim = “Ju lutemi shkruani një adresë të vlefshme emaili.n”;
    }
    gabim kthimi;
    }

  22. 31

    funksion validateEmail(fld) {
    var gabim=””;
    var tfld = trim(fld.vlera); // vlera e fushës me hapësirën e bardhë të shkurtuar
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var ilegaleChars= /[(),;:\”[]]/ ;

    if (fld.value == "Fut adresën tuaj të emailit") {

    gabim = “Ju lutemi shkruani adresën tuaj të emailit.n”;
    } else if (!emailFilter.test(tfld)) { //test email për karaktere të paligjshme

    gabim = “Ju lutemi shkruani një adresë të vlefshme emaili.n”;
    } else if (fld.value.match(ilegalChars)) {

    gabim = “Ju lutemi shkruani një adresë të vlefshme emaili.n”;
    }
    gabim kthimi;
    }

  23. 32

    funksion validateEmail(fld) {
    var gabim=””;
    var tfld = trim(fld.vlera); // vlera e fushës me hapësirën e bardhë të shkurtuar
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var ilegaleChars= /[(),;:\”[]]/ ;

    if (fld.value == "Fut adresën tuaj të emailit") {

    gabim = “Ju lutemi shkruani adresën tuaj të emailit.n”;
    } else if (!emailFilter.test(tfld)) { //test email për karaktere të paligjshme

    gabim = “Ju lutemi shkruani një adresë të vlefshme emaili.n”;
    } else if (fld.value.match(ilegalChars)) {

    gabim = “Ju lutemi shkruani një adresë të vlefshme emaili.n”;
    }
    gabim kthimi;
    }

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

Çfarë mendoni ju?

Kjo faqe përdor Akismet për të reduktuar spamin. Mësoni se si përpunohet komenti juaj.