Tarkista sähköpostiosoite JavaScriptin ja säännöllisten lausekkeiden avulla

Hetki sitten laitoin a Salasanan vahvuuden tarkistaja, joka käyttää JavaScriptiä ja säännöllisiä lausekkeita. Samasta muistiinpanosta voit myös tarkistaa sähköpostiosoitteen rakenteen käyttämällä samaa säännöllisen lausekkeen (regex) menetelmää.

Jos lomake-elementilläsi on id = ”sähköpostiosoite” ja lisäät lomakkeen onSubmit = ”return checkEmail ();", Tämä on Javascript-toiminto, jota voit käyttää ilmoituksen palauttamiseen, jos sähköpostiosoitteella on kelvollinen rakenne tai ei:

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

Toiminto tarkistaa sähköpostin sisällön suodattimen kanssa. Jos vertailu epäonnistuu, se avaa ilmoituksen ja palauttaa kohdistuksen takaisin sähköpostiosoitekenttään!

41 Kommentit

  1. 1

    Lomakkeille, joissa on useita sähköpostiosoitteita, olisi hyvä tehdä class = ”emailaddress”. Jos sinulla on prototype.js-kirjasto (http://www.prototypejs.org), joka on sivulla, voit tehdä jotain tällaista:

    var valid = true;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$ ('. emailaddress'). kukin (funktio (sähköposti) {
    if (! filter.test (email.value)) {
    hälytys (? Anna oikea sähköpostiosoite?);
    email.focus;
    voimassa = väärä;
    }
    });
    palautus voimassa;

  2. 5
  3. 7

    Pidän ajatuksesta, mutta epäröin omaksua tämän säännöllisen lausekkeen ilman kuvausta siitä, mitä laillisia sähköpostiosoitteita se ei hyväksy ja mitkä laittomat osoitteet se sallii.

    Katso esimerkki säännöllisestä lausekkeesta, joka tekee kunnollista työtä, selityksen kanssa, mitä tapauksia se ei kata:

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

    Henkilökohtaisena mieltymykseni on kattaa suurin osa yksinkertaisista tapauksista ja antaa varoitus kaikesta muusta sen sijaan, että hylkääisin sen. Jos Bob todella haluaa lähetyksen bob@com.museum sen sijaan, bob@museum.com, miksi ei anna hänen?

    • 8

      Hei Reg,

      Voit testata Regexiä käyttämällä Online Regex -testari.

      Lisäksi voit varmasti tehdä paljon enemmän, jos haluat varmistaa sähköpostiosoite on voimassa RFC: n mukaisesti.

      On olemassa muutama syy, miksi ei sallita jonkun syöttää virheellistä sähköpostiosoitetta:
      1. Heidät ärsyttävät sinua, kun odottamaasi sähköpostia ei saada läpi - riippumatta siitä, syitkö osoite väärin.
      2. Jos com.museum oli kelvollinen verkkotunnus ja sanotaan Yahoo! käytti sitä - kaikilla palautetuilla sähköpostiosoitteilla olisi kielteinen vaikutus yrityksesi maineeseen sähköpostin jakelussa. Tämä voi johtaa siihen, että kaikki yrityksesi sähköpostit estetään.
      3. Jos sähköpostipalveluntarjoajasi antoi sinulle pääsyn bob@com.museum, maksat myös jokaisesta kyseiseen sähköpostiosoitteeseen lähetetystä sähköpostista, kunnes he peruuttivat kyseisen osoitteen pomppujen takia. Haluaisin välttää kaikki ESP: t, jotka sallivat virheellisen sähköpostiosoitteen - he vain ottavat rahasi!

      Kiitos käynnistä!
      Doug

  4. 9
  5. 10

    On paljon yksinkertaisempi tapa kirjoittaa lauseke:
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    - Lopullisella muokkaimella / i ei tarvitse ilmoittaa isoja kirjaimia.
    - En tiedä yhtään TLD jossa on numeroita.
    Sivuhuomautuksena, sallin TLD: n enintään 6 merkillä; uusia saapuu säännöllisesti etkä koskaan tiedä (no, tulevissa sommeissa voi olla jopa numeroita, tiedän).

  6. 11

    Moi,

    Pyrin käyttämään tätä olemassa olevassa muodossa reaaliajassa, mutta tämä ei näytä vahvistuvan reaaliajassa, kuten salasanan vahvuuden tarkistin ...

    Vai olenko vain niin avulias, ja se ei toimi minulle?

  7. 12

    BTW, pidän todella siitä, mitä täällä olet tekemässä, opetusohjelmasi ovat hyvin yksinkertaisia, aion varmasti lisätä kirjanmerkkeihin tämän….

  8. 13
  9. 16
  10. 17

    Vain pieni korjaus: Säännöllisen lausekkeen lopussa on ylimääräinen () +. Sen pitäisi lukea:

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

    Ensimmäisen kohdalla hyväksytään mikä tahansa pituus TLD: t (mikä ei ole sisäisesti väärin, kuten muut ovat huomauttaneet, mutta jos se oli tarkoitus, lauseketta voitaisiin lyhentää).

  11. 18

    Voitteko selittää tämän koodin säännöllisen lausekkeen ja miten se toimii? Myös .testistä - Onko .test oletusselvitys javascriptissä tarkistaaksesi asioita, kuten teit yllä olevassa koodissa?

  12. 19

    Tämä on lyhyt koodi sähköpostilausekkeelle-

    function validateEmail (id)
    {
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.
    return emailPattern.test (id);

    }
    Deepak Rai
    Varanasi

  13. 20

    Tämä on lyhyt koodi sähköpostilausekkeelle-

    function validateEmail (id)
    {
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.
    return emailPattern.test (id);

    }
    Deepak Rai
    Varanasi

  14. 21
  15. 22
  16. 23

    Kiitos, mutta tässä regexissä on virhe. En ole regex-asiantuntija, mutta yritin sähköpostia:

    testi testi

    ja se ohitti regexin ... Huomasin, ettei se puutu pakenemaan "." joten sen pitäisi olla:

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

  17. 24
  18. 27

    No, tämä on vain karkea tarkistus, mutta ei 100% tarkka, esimerkiksi tämä olisi ok john_doe. @ gmail.com mikä ei todellakaan ole kelvollinen sähköpostiosoite (piste ei ole sallittu viimeisenä merkkinä sähköpostin paikallisessa osassa).
    Myös se hyväksyisi john…doe@gmail.com mikä on myös virheellinen, koska jaksossa voi olla vain yksi piste.

    Nämä ovat vain joitain virheitä, jotka huomasin ensi silmäyksellä.
    Aikomukseni ei ole röyhkeä vain huomauttaa tästä, jos joku aikoo käyttää sitä turvatarkastuksena - ei riittävän turvallinen.

    Lisätietoja voimassa olevista sähköpostiosoitteista saat tästä: http://en.wikipedia.org/wiki/E-mail_address

  19. 28

    Deepak,

    Itse asiassa mielestäni sinun on käytettävä pakoa pisteelle ("."). Joten toimintosi pitäisi olla sen sijaan:

    function validateEmail (id)
    {
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.
    return emailPattern.test (id);

    }

    Muussa tapauksessa piste tarkoittaisi mitä tahansa merkkiä. Uskon, että tällaiset erikoishahmot täytyy välttää.

    Terveisin,

    Federico

  20. 29

    function validateEmail (fld) {
    var virhe = ””;
    var tfld = leikkaus (fld.arvo); // kentän arvo, jonka välilyönti on leikattu
    var emailFilter = /^[^@] +
    var laitonChars = / [(),;: \ ”[]] /;

    if (fld.value == "Anna sähköpostiosoitteesi") {

    error = "Anna sähköpostiosoitteesi.n";
    } else if (! emailFilter.test (tfld)) {// testaa sähköpostia laittomien merkkien varalta

    error = "Anna kelvollinen sähköpostiosoite.n";
    } else if (fld.value.match (laitonChars)) {

    error = "Anna kelvollinen sähköpostiosoite.n";
    }
    palautusvirhe;
    }

  21. 30

    function validateEmail (fld) {
    var virhe = ””;
    var tfld = leikkaus (fld.arvo); // kentän arvo, jonka välilyönti on leikattu
    var emailFilter = /^[^@] +
    var laitonChars = / [(),;: \ ”[]] /;

    if (fld.value == "Anna sähköpostiosoitteesi") {

    error = "Anna sähköpostiosoitteesi.n";
    } else if (! emailFilter.test (tfld)) {// testaa sähköpostia laittomien merkkien varalta

    error = "Anna kelvollinen sähköpostiosoite.n";
    } else if (fld.value.match (laitonChars)) {

    error = "Anna kelvollinen sähköpostiosoite.n";
    }
    palautusvirhe;
    }

  22. 31

    function validateEmail (fld) {
    var virhe = ””;
    var tfld = leikkaus (fld.arvo); // kentän arvo, jonka välilyönti on leikattu
    var emailFilter = /^[^@] +
    var laitonChars = / [(),;: \ ”[]] /;

    if (fld.value == "Anna sähköpostiosoitteesi") {

    error = "Anna sähköpostiosoitteesi.n";
    } else if (! emailFilter.test (tfld)) {// testaa sähköpostia laittomien merkkien varalta

    error = "Anna kelvollinen sähköpostiosoite.n";
    } else if (fld.value.match (laitonChars)) {

    error = "Anna kelvollinen sähköpostiosoite.n";
    }
    palautusvirhe;
    }

  23. 32

    function validateEmail (fld) {
    var virhe = ””;
    var tfld = leikkaus (fld.arvo); // kentän arvo, jonka välilyönti on leikattu
    var emailFilter = /^[^@] +
    var laitonChars = / [(),;: \ ”[]] /;

    if (fld.value == "Anna sähköpostiosoitteesi") {

    error = "Anna sähköpostiosoitteesi.n";
    } else if (! emailFilter.test (tfld)) {// testaa sähköpostia laittomien merkkien varalta

    error = "Anna kelvollinen sähköpostiosoite.n";
    } else if (fld.value.match (laitonChars)) {

    error = "Anna kelvollinen sähköpostiosoite.n";
    }
    palautusvirhe;
    }

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

Mitä mieltä olet?

Tämä sivusto käyttää Akismetiä roskapostin vähentämiseksi. Lue, miten kommenttitietosi käsitellään.