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 meiliaadressiga vormide puhul oleks hea teha class=”emailaddress”. Kui teil on prototype.js teek (http://www.prototypejs.org) saate teha midagi sellist:

    var kehtiv = tõene;
    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(?Palun sisestage kehtiv e-posti aadress?);
    email.focus;
    kehtiv = vale;
    }
    });
    tagastus kehtiv;

  2. 5
  3. 7

    Mulle meeldib see idee, kuid ma kõhkleksin selle konkreetse regulaaravaldise kasutuselevõtmisega, kirjeldamata, milliseid juriidilisi e-posti aadresse see ei aktsepteeri ja milliseid ebaseaduslikke aadresse see lubab.

    Näide regulaaravaldise kohta, mis teeb korralikku tööd, koos selgitusega selle kohta, milliseid juhtumeid see ei hõlma, vaadake järgmist:

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

    Minu isiklik eelistus on käsitleda enamikku lihtsatest juhtudest ja anda hoiatus kõige muu eest, selle asemel et seda tagasi lükata. Kui Bob tõesti tahab, esitage bob@com.museum mitte bob@museum.com, miks mitte lasta tal?

    • 8

      Tere Reg,

      Regexi saate testida, kasutades Online Regex Tester.

      Samuti saab kindlasti palju rohkem ära teha, kui soovite tagada e-posti aadress kehtib vastavalt RFC-le.

      On mõned põhjused, miks mitte lubada kellelgi vigast e-posti aadressi sisestada.
      1. Nad saavad teie peale pahaseks, kui oodatud e-kiri ei jõua – olenemata sellest, kas see oli teie süü, aadress sisestati valesti või mitte.
      2. Kui com.museum oleks kehtiv domeen ja oletame, et Yahoo! kasutas seda – mis tahes e-posti aadress, mis tagasi pöördub, avaldaks negatiivset mõju teie ettevõtte mainele meilide edastamisel. See võib viia kogu teie ettevõtte meili blokeerimiseni.
      3. Kui teie meiliteenuse pakkuja lubas teil siseneda bob@com.museum, maksate ka iga sellele e-posti aadressile saadetud meili eest, kuni nad selle aadressi tellimuse tühistamise tõttu tagasi lükkavad. Ma hoiaksin eemale kõigist ESP-dest, mis lubavad sellist kehtetut meiliaadressi – nad lihtsalt võtavad teie raha!

      Täname, et peatasite!
      Doug

  4. 9
  5. 10

    Väljendi kirjutamiseks on palju lihtsam viis:
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    – Viimase modifikaatoriga /i ei ole vaja suurtähtede vahemikku näidata.
    – Ma ei tea ühtegi TLD numbritega.
    Märkusena võib öelda, et ma luban kuni 6 tähemärgiga tippdomeeni; uued tulevad regulaarselt ja kunagi ei tea (no mõnel tulevasel võib isegi numbreid sees olla, ma tean).

  6. 11

    Hi there,

    Püüan seda olemasoleval kujul reaalajas kasutada, kuid see ei paista reaalajas kehtivat 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, mis teil siin toimub, teie õpetused on väga lihtsad, lisan selle kindlasti järjehoidjatesse….

  8. 13
  9. 16
  10. 17

    Väike parandus: regulaaravaldise lõpus on ekstra ()+. See peaks lugema:

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

    Esimesega aktsepteeritaks mis tahes pikkusega tippdomeenisid (mis ei ole olemuslikult vale, nagu teised on märkinud, kuid kui see oli eesmärk, võiks väljendit lühendada).

  11. 18

    Kas saate palun selgitada selle koodi regulaaravaldist ja selle toimimist? Samuti .testi kohta – kas .test on JavaScripti vaikelause, et kontrollida asju, nagu tegite ülaltoodud koodis?

  12. 19

    See on lühike kood e-posti väljendamiseks-

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

    }
    Deepak Rai
    varanasi

  13. 20

    See on lühike kood e-posti väljendamiseks-

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

    }
    Deepak Rai
    varanasi

  14. 21
  15. 22
  16. 23

    Täname, kuid selles regexis on viga. Ma ei ole regexi ekspert, kuid proovisin meili:

    test@test

    ja see läbis regexi... Märkasin, et "." nii peaks olema:

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

  17. 24
  18. 27

    Noh, see on vaid ligikaudne kontroll, kuid mitte 100% täpne, näiteks oleks see okei john_doe.@gmail.com mis tegelikult ei ole kehtiv e-posti aadress (punkt ei ole meili kohalikus osas viimase märgina lubatud).
    Samuti võtaks see vastu john…doe@gmail.com mis on samuti kehtetu, kuna jadas ei saa olla rohkem kui üks punkt.

    Need on vaid mõned vead, mida esmapilgul märkasin.
    Minu eesmärk ei ole lihtsalt sellele tähelepanu juhtida juhuks, kui keegi kavatseb seda turvakontrollina kasutada – see pole piisavalt turvaline.

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

  19. 28

    Deepak,

    Tegelikult arvan, et peate täpi (.) jaoks kasutama paoklahvi. Seega peaks teie funktsioon olema selle asemel:

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

    }

    Vastasel juhul tähendaks punkt "mis tahes tähemärki". Usun, et sellistest erimärkidest tuleb põgeneda.

    soovidega,

    Federico

  20. 29

    function validateEmail(fld) {
    var error=””;
    var tfld = trimmi(fld.väärtus); // välja kärbitud tühikuga väärtus
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

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

    error = "Palun sisestage oma e-posti aadress.n";
    } else if (!emailFilter.test(tfld)) { //testige meilisõnumit ebaseaduslike tähemärkide jaoks

    error = "Palun sisestage kehtiv e-posti aadress.n";
    } else if (fld.value.match(illegalChars)) {

    error = "Palun sisestage kehtiv e-posti aadress.n";
    }
    tagastamise viga;
    }

  21. 30

    function validateEmail(fld) {
    var error=””;
    var tfld = trimmi(fld.väärtus); // välja kärbitud tühikuga väärtus
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

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

    error = "Palun sisestage oma e-posti aadress.n";
    } else if (!emailFilter.test(tfld)) { //testige meilisõnumit ebaseaduslike tähemärkide jaoks

    error = "Palun sisestage kehtiv e-posti aadress.n";
    } else if (fld.value.match(illegalChars)) {

    error = "Palun sisestage kehtiv e-posti aadress.n";
    }
    tagastamise viga;
    }

  22. 31

    function validateEmail(fld) {
    var error=””;
    var tfld = trimmi(fld.väärtus); // välja kärbitud tühikuga väärtus
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

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

    error = "Palun sisestage oma e-posti aadress.n";
    } else if (!emailFilter.test(tfld)) { //testige meilisõnumit ebaseaduslike tähemärkide jaoks

    error = "Palun sisestage kehtiv e-posti aadress.n";
    } else if (fld.value.match(illegalChars)) {

    error = "Palun sisestage kehtiv e-posti aadress.n";
    }
    tagastamise viga;
    }

  23. 32

    function validateEmail(fld) {
    var error=””;
    var tfld = trimmi(fld.väärtus); // välja kärbitud tühikuga väärtus
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

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

    error = "Palun sisestage oma e-posti aadress.n";
    } else if (!emailFilter.test(tfld)) { //testige meilisõnumit ebaseaduslike tähemärkide jaoks

    error = "Palun sisestage kehtiv e-posti aadress.n";
    } else if (fld.value.match(illegalChars)) {

    error = "Palun sisestage kehtiv e-posti aadress.n";
    }
    tagastamise viga;
    }

  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.