Kontrollige e-posti aadressi JavaScripti ja regulaaravaldistega

Mõni aeg tagasi panin üles a Parooli tugevuse kontrollija JavaScripti ja regulaaravaldiste abil. Samal märkusel saate kontrollida sama e-posti aadressi struktuuri, kasutades sama regulaaravaldise (regex) metoodikat.

Kui teie vormielemendis on id = ”e-posti aadress” ja lisate vormi onSubmit = ”return checkEmail ();", See on Javascripti funktsioon, mida saate kasutada teate tagastamiseks, kui e-posti aadress on kehtiva struktuuriga või mitte:

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

Funktsioon kinnitab meilisisu filtri omaga. Kui võrdlus ebaõnnestub, ilmub see hoiatus ja naaseb fookuse tagasi e-posti aadressi väljale!

41 Kommentaarid

  1. 1

    Mitme e-posti aadressiga vormide puhul oleks hea teha class = ”emailaddress”. Kui teil on teek prototype.js (http://www.prototypejs.org), mis on lisatud lehele, saate teha midagi sellist:

    var valid = true;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$ ('. emailaddress'). iga (funktsioon (e-post) {
    if (! filter.test (email.value)) {
    märguanne (? Palun sisestage kehtiv e-posti aadress?);
    email.fookus;
    kehtiv = vale;
    }
    });
    tagastamine kehtib;

  2. 5
  3. 7

    Mulle see idee meeldib, kuid oleksin kõhklev selle konkreetse regulaaravaldise kasutamisel, kirjeldamata, milliseid legaalseid e-posti aadresse see ei aktsepteeri ja milliseid ebaseaduslikke aadresse see lubab.

    Korraliku töö tegeva regulaaravaldise näide koos selgitusega, milliseid juhtumeid see ei hõlma, leiate sellest:

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

    Minu isiklik eelistus on kajastada enamikku lihtsatest juhtumitest ja anda hoiatus kõige muu kohta, selle asemel, et seda tagasi lükata. Kui Bob tõesti soovib sto esitamist bob@com.museum mitte bob@museum.com, miks mitte lasta tal?

    • 8

      Tere, Reg,

      Regexi saate testida, kasutades Online Regexi testija.

      Lisaks on kindlasti veel palju muud, kui soovite tagada e-posti aadress kehtib vastavalt RFC-le.

      Vale e-posti aadressi sisestamise keelamiseks on mõned põhjused:
      1. Nad häirivad teid, kui oodatud e-kiri ei jõua läbi - hoolimata sellest, kas see oli teie süü või mitte, et aadress sisestati valesti.
      2. Kui com.museum oli kehtiv domeen ja oletame, et Yahoo! opereeris seda - igal e-posti aadressil, mis põrkas, oleks negatiivne mõju teie ettevõtte e-posti kohaletoimetamise mainele. See võib viia kogu teie ettevõtte e-posti blokeerimisele.
      3. Kui teie e-posti teenuse pakkuja lubas teil sisestada bob@com.museum, maksaksite ka iga sellele e-posti aadressile saadetud e-kirja eest, kuni nad põrkamise tõttu selle aadressi tellimusest loobusid. Hoiduksin kõigist ESP-dest, mis lubaksid sellist kehtetut e-posti aadressi - nad lihtsalt võtavad teie raha!

      Täname, et peatasite!
      Doug

  4. 9
  5. 10

    Avaldise kirjutamiseks on palju lihtsam viis:
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    - Lõpliku modifikaatori / i puhul ei ole vaja suurtähtede vahemikku näidata.
    - Ma ei tea ühtegi TLD numbritega.
    Vahemärkusena luban, et luban TLD-d kuni 6 tähemärgiga; uusi saabub regulaarselt ja seda ei tea kunagi (noh, tulevastel võib olla isegi numbreid, ma tean).

  6. 11

    Hi there,

    Ma proovin seda kasutada olemasolevas vormis reaalajas, kuid see ei näi valideeruvat reaalajas nagu teie parooli tugevuse kontrollija ...

    Või olen ma lihtsalt nii abitu ja see ei tööta minu jaoks?

  7. 12

    btw, mulle väga meeldib see, mida sa siin teed, sinu õpetused on väga lihtsad, kindlasti lisan selle järjehoidjatesse ....

  8. 13
  9. 16
  10. 17

    Lihtsalt väike parandus: regulaaravaldise lõpus on lisa () +. See peaks olema järgmine:

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

    Esimese puhul aktsepteeritakse mis tahes pikkusega tippdomeene (mis ei ole sisemiselt vale, nagu teised on rõhutanud, kuid kui see oli kavatsus, võiks seda väljendit lühendada).

  11. 18

    Kas saaksite selgitada selle koodi regulaarset väljendit ja kuidas see töötab? Ka .testi kohta - kas .test on JavaScripti vaikeväljavõte, et kontrollida asju nagu teie tegite ülaltoodud koodis?

  12. 19

    See on lühike kood meilisõnumi-

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

    }
    Deepak Rai
    varanasi

  13. 20

    See on lühike kood meilisõnumi-

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

    }
    Deepak Rai
    varanasi

  14. 21
  15. 22
  16. 23

    Täname, kuid selles regexis on viga. Ma ei ole regex-ekspert, kuid proovisin e-posti:

    test @ test

    ja see läbis regexi ... märkasin, et sellel pole veel põgenemist. nii peaks see olema:

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

  17. 24
  18. 27

    Noh, see on lihtsalt ülevaatlik kontroll, kuid mitte 100% täpne, näiteks see oleks okei john_doe. @ gmail.com mis tegelikult pole kehtiv e-posti aadress (punkt pole viimase tähemärgina lubatud e-posti kohalikus osas).
    Ka see oleks nõus john…doe@gmail.com mis on samuti kehtetu, kuna järjestuses ei saa olla rohkem kui üks punkt.

    Need on vaid mõned vead, mida märkasin esimesest silmapilgust.
    Minu kavatsus ei ole just selle välja toomine, kui keegi kavatseb seda kasutada turvakontrollina - pole piisavalt turvaline.

    Kehtivate e-posti aadresside kohta lisateabe saamiseks vaadake seda: http://en.wikipedia.org/wiki/E-mail_address

  19. 28

    Deepak,

    Tegelikult arvan, et peate punkti (“.”) Jaoks põgenema. Seega peaks teie funktsioon olema hoopis järgmine:

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

    }

    Vastasel juhul tähendaks punkt “suvalist tähemärki”. Usun, et sellistest eritegelastest tuleb põgeneda.

    soovidega,

    Federico

  20. 29

    funktsioon validateEmail (fld) {
    var tõrge = ””;
    var tfld = trim (fld.väärtus); // välja tühjendatud tühiku väärtus
    var emailFilter = /^[^@]+@[^@.]+. [^@]*ww$/;
    var illegaalsedChars = / [(),;: \ ”[]] /;

    if (fld.value == "Sisestage oma e-posti aadress") {

    error = "Palun sisestage oma e-posti aadress.n";
    } else if (! emailFilter.test (tfld)) {// testige e-posti aadressi ebaseaduslike märkide suhtes

    error = “Sisestage kehtiv e-posti aadress.n”;
    } else if (fld.value.match (illegaalsedChars)) {

    error = “Sisestage kehtiv e-posti aadress.n”;
    }
    tagastusviga;
    }

  21. 30

    funktsioon validateEmail (fld) {
    var tõrge = ””;
    var tfld = trim (fld.väärtus); // välja tühjendatud tühiku väärtus
    var emailFilter = /^[^@]+@[^@.]+. [^@]*ww$/;
    var illegaalsedChars = / [(),;: \ ”[]] /;

    if (fld.value == "Sisestage oma e-posti aadress") {

    error = "Palun sisestage oma e-posti aadress.n";
    } else if (! emailFilter.test (tfld)) {// testige e-posti aadressi ebaseaduslike märkide suhtes

    error = “Sisestage kehtiv e-posti aadress.n”;
    } else if (fld.value.match (illegaalsedChars)) {

    error = “Sisestage kehtiv e-posti aadress.n”;
    }
    tagastusviga;
    }

  22. 31

    funktsioon validateEmail (fld) {
    var tõrge = ””;
    var tfld = trim (fld.väärtus); // välja tühjendatud tühiku väärtus
    var emailFilter = /^[^@]+@[^@.]+. [^@]*ww$/;
    var illegaalsedChars = / [(),;: \ ”[]] /;

    if (fld.value == "Sisestage oma e-posti aadress") {

    error = "Palun sisestage oma e-posti aadress.n";
    } else if (! emailFilter.test (tfld)) {// testige e-posti aadressi ebaseaduslike märkide suhtes

    error = “Sisestage kehtiv e-posti aadress.n”;
    } else if (fld.value.match (illegaalsedChars)) {

    error = “Sisestage kehtiv e-posti aadress.n”;
    }
    tagastusviga;
    }

  23. 32

    funktsioon validateEmail (fld) {
    var tõrge = ””;
    var tfld = trim (fld.väärtus); // välja tühjendatud tühiku väärtus
    var emailFilter = /^[^@]+@[^@.]+. [^@]*ww$/;
    var illegaalsedChars = / [(),;: \ ”[]] /;

    if (fld.value == "Sisestage oma e-posti aadress") {

    error = "Palun sisestage oma e-posti aadress.n";
    } else if (! emailFilter.test (tfld)) {// testige e-posti aadressi ebaseaduslike märkide suhtes

    error = “Sisestage kehtiv e-posti aadress.n”;
    } else if (fld.value.match (illegaalsedChars)) {

    error = “Sisestage kehtiv e-posti aadress.n”;
    }
    tagastusviga;
    }

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

Mis sa arvad?

Sellel saidil kasutatakse rämpsposti vähendamiseks Akismetit. Vaadake, kuidas teie andmeid töödeldakse.