Ellenőrizze az e-mail címet JavaScript-sel és reguláris kifejezésekkel

Nemrégiben feltettem a Jelszóerősség-ellenőrző JavaScript és reguláris kifejezések használatával. Ugyanezen megjegyzésben ellenőrizheti az e-mail cím szerkezetét is ugyanazon reguláris kifejezés (regex) módszer segítségével.

Ha az űrlap elem rendelkezik a id = ”emailcím” és hozzáad egy űrlapot onSubmit = ”return checkEmail ();“, Ez egy Javascript-funkció, amelyet riasztás küldéséhez használhat, ha az e-mail cím érvényes szerkezettel rendelkezik, vagy sem:

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

A függvény ellenőrzi az e-mail tartalmát a szűrőéval. Ha az összehasonlítás sikertelen, akkor megjelenik egy figyelmeztetés, és visszatér a fókusz az e-mail cím mezőbe!

41 Comments

  1. 1

    A több e-mail címet tartalmazó űrlapok esetében jó lenne a class=”emailaddress” megadása. Ha rendelkezik a prototype.js könyvtárral (http://www.prototypejs.org) található az oldalon, a következőket teheti:

    var valid = igaz;
    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(?Adjon meg egy érvényes e-mail címet?);
    email.focus;
    érvényes = hamis;
    }
    });
    visszaküldés érvényes;

  2. 5
  3. 7

    Tetszik az ötlet, de haboznék elfogadni ezt a bizonyos reguláris kifejezést anélkül, hogy leírná, mely legális e-mail címeket nem fogadja el, és mely illegális címeket engedélyezi.

    Egy tisztességes munkát végző reguláris kifejezésre, valamint annak magyarázatára, hogy mely eseteket nem fedi le, nézze meg ezt:

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

    Személyes előnyben részesítem az egyszerű esetek többségét, és minden másra figyelmeztetést adok, ahelyett, hogy elutasítanám. Ha Bob tényleg be akarja adni bob@com.museum helyett bob@museum.com, miért ne engedné?

    • 8

      Szia Reg!

      Kipróbálhatja a Regex-et egy Online Regex tesztelő.

      Ezenkívül határozottan még sok más teendő van, ha biztosítani akarja a E-mail cím az RFC szerint érvényes.

      Több oka is van annak, hogy valaki érvénytelen e-mail címet írjon be:
      1. Haragudni fognak rád, ha az általuk várt e-mail nem érkezik meg – függetlenül attól, hogy az Ön hibája vagy sem, a címet rosszul adta meg.
      2. Ha a com.museum érvényes domain lenne, és mondjuk a Yahoo! üzemeltette – minden visszapattanó e-mail cím negatív hatással lenne a vállalat hírnevére az e-mailek kézbesítése terén. Ez a vállalat összes e-mail-címének blokkolásához vezethet.
      3. Ha az e-mail szolgáltatója engedélyezte a belépést bob@com.museum, akkor fizetnie kell az erre az e-mail címre küldött minden egyes e-mailért, amíg a visszapattanások miatt le nem iratkoztak erről a címről. Kerülnék minden olyan ESP-t, amely ilyen érvénytelen e-mail címet engedélyezne – csak elveszik a pénzét!

      Köszönjük, hogy megállt!
      Doug

  4. 9
  5. 10

    Sokkal egyszerűbb módja van a kifejezés leírásának:
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    – A /i végső módosítóval nem kell a nagybetűs tartományt megadni.
    – Egyikről sem tudok TLD számokkal benne.
    Megjegyzem, hogy engedélyezem a legfeljebb 6 karakteres TLD-t; rendszeresen érkeznek újak, és sosem lehet tudni (jó, néhány jövőbeliben még számok is lehetnek, tudom).

  6. 11

    Szia,

    Megpróbálom ezt egy meglévő formában valós időben használni, de úgy tűnik, hogy ez nem valós időben érvényesül, mint a jelszóerősség-ellenőrző…

    Vagy csak én vagyok olyan tanácstalan, és ez nekem nem megy?

  7. 12

    btw, nagyon tetszik, amit itt csinálsz, az oktatóanyagaid nagyon egyszerűek, ezt minden bizonnyal könyvjelzővel fogom ellátni….

  8. 13
  9. 16
  10. 17

    Csak egy kis javítás: A reguláris kifejezésnek van egy extra ()+ a végén. A következőt kell írni:

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

    Az elsővel bármilyen hosszúságú TLD elfogadható lenne (ami alapvetően nem tévedés, ahogy mások rámutattak, de ha ez volt a szándék, a kifejezés lerövidíthető).

  11. 18

    Meg tudná magyarázni ennek a kódnak a reguláris kifejezését és működését? A .testről is – A .test alapértelmezett utasítás a javascriptben, hogy ellenőrizze a fenti kódhoz hasonló dolgokat?

  12. 19

    Ez egy rövid kód az e-mail kifejezéshez-

    függvény valideEmail(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

    Ez egy rövid kód az e-mail kifejezéshez-

    függvény valideEmail(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

    Köszönöm, de hiba van ebben a szabályos kifejezésben. Nem vagyok regex szakértő, de kipróbáltam az e-mailt:

    teszt

    és átment a reguláris kifejezésen… Észrevettem, hogy hiányzik a "." így kell lennie:

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

  17. 24
  18. 27

    Nos, ez csak egy durva ellenőrzés, de nem 100%-os pontosság, például ez rendben is lenne john_doe.@gmail.com amely valójában nem érvényes e-mail cím (a pont nem megengedett utolsó karakter az e-mail helyi részében).
    Azt is elfogadná john… doe@gmail.com ami szintén érvénytelen, mivel egy sorozatban nem lehet több pont.

    Ez csak néhány hiba, amit első pillantásra észrevettem.
    Nem az a szándékom, hogy rávilágítsak erre arra az esetre, ha valaki biztonsági ellenőrzésként tervezi ezt használni – nem elég biztonságos.

    Az érvényes e-mail címekről itt tájékozódhat: http://en.wikipedia.org/wiki/E-mail_address

  19. 28

    Deepak,

    Valójában azt gondolom, hogy a ponthoz (“.”) egy menekülést kell alkalmazni. Tehát a függvénynek a következőnek kell lennie:

    függvény valideEmail(id)
    {
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
    return emailPattern.test(id);

    }

    Ellenkező esetben a pont „bármilyen karaktert” jelentene. Úgy gondolom, hogy az ilyen különleges karaktereket meg kell szökni.

    Üdvözlettel,

    Federico

  20. 29

    function validateEmail(fld) {
    var error=””;
    var tfld = trim(fld.value); // a mező értéke levágott szóközzel
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

    if (fld.value == "Adja meg e-mail címét") {

    error = "Kérjük, adja meg e-mail címét.n";
    } else if (!emailFilter.test(tfld)) { //teszt email illegális karakterekre

    error = "Kérjük, adjon meg egy érvényes e-mail címet.n";
    } else if (fld.value.match(illegalChars)) {

    error = "Kérjük, adjon meg egy érvényes e-mail címet.n";
    }
    visszatérési hiba;
    }

  21. 30

    function validateEmail(fld) {
    var error=””;
    var tfld = trim(fld.value); // a mező értéke levágott szóközzel
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

    if (fld.value == "Adja meg e-mail címét") {

    error = "Kérjük, adja meg e-mail címét.n";
    } else if (!emailFilter.test(tfld)) { //teszt email illegális karakterekre

    error = "Kérjük, adjon meg egy érvényes e-mail címet.n";
    } else if (fld.value.match(illegalChars)) {

    error = "Kérjük, adjon meg egy érvényes e-mail címet.n";
    }
    visszatérési hiba;
    }

  22. 31

    function validateEmail(fld) {
    var error=””;
    var tfld = trim(fld.value); // a mező értéke levágott szóközzel
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

    if (fld.value == "Adja meg e-mail címét") {

    error = "Kérjük, adja meg e-mail címét.n";
    } else if (!emailFilter.test(tfld)) { //teszt email illegális karakterekre

    error = "Kérjük, adjon meg egy érvényes e-mail címet.n";
    } else if (fld.value.match(illegalChars)) {

    error = "Kérjük, adjon meg egy érvényes e-mail címet.n";
    }
    visszatérési hiba;
    }

  23. 32

    function validateEmail(fld) {
    var error=””;
    var tfld = trim(fld.value); // a mező értéke levágott szóközzel
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

    if (fld.value == "Adja meg e-mail címét") {

    error = "Kérjük, adja meg e-mail címét.n";
    } else if (!emailFilter.test(tfld)) { //teszt email illegális karakterekre

    error = "Kérjük, adjon meg egy érvényes e-mail címet.n";
    } else if (fld.value.match(illegalChars)) {

    error = "Kérjük, adjon meg egy érvényes e-mail címet.n";
    }
    visszatérési hiba;
    }

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

Mit gondolsz?

Ez az oldal Akismet-et használ a levélszemét csökkentése érdekében. Ismerje meg, hogyan dolgozik a megjegyzésed.