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

    Több e-mail címmel rendelkező űrlapok esetén jó lenne megtenni a class = ”emailaddress” szót. Ha rendelkezik a prototype.js könyvtárral (http://www.prototypejs.org), amely az oldalon található, ilyesmit tehet:

    var valid = true;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$ ('. emailcím'). mindegyik (függvény (e-mail) {
    if (! filter.test (email.value)) {
    figyelmeztetés (? Kérjük, adjon meg érvényes e-mail címet?);
    email.fókusz;
    érvényes = hamis;
    }
    });
    érvényes visszaküldés;

  2. 5
  3. 7

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

    Példát egy szabályos kifejezésre, amely tisztességes munkát végez, valamint magyarázatot ad arra, hogy mely esetekre nem terjed ki, lásd ezt:

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

    Személyes preferenciám az, hogy az egyszerű esetek többségét lefedem, és minden másra figyelmeztetést adok, nem pedig elutasítom. Ha Bob nagyon szeretne sto benyújtani bob@com.museum helyett bob@museum.com, miért nem engedi?

    • 8

      Szia Reg

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

      Ezenkívül még biztosan sokkal többet lehet tenni, ha biztosítani akarod a E-mail cím az RFC szerint érvényes.

      Néhány oka annak, hogy nem engedélyezzük, hogy valaki érvénytelen e-mail címet adjon meg:
      1. Bosszankodni fognak rajtad, amikor a várt e-mail nem jut át ​​- függetlenül attól, hogy a hibád volt-e vagy sem, hogy a címet helytelenül adtuk meg.
      2. Ha a com.museum érvényes domain volt, és mondjuk a Yahoo! üzemeltette - minden visszapattanó e-mail cím negatívan befolyásolja a vállalat hírnevét az e-mail kézbesítés terén. Ez ahhoz vezethet, hogy a vállalat összes e-mailjét blokkolják.
      3. Ha az e-mail szolgáltató engedélyezte a belépést bob@com.museum, akkor is fizetnie kell minden e-mail címre, amelyet erre az e-mail címre küldtek, mindaddig, amíg a visszapattanások miatt le nem iratkoztak róla. Elkerülnék minden olyan ESP-t, amely érvénytelen e-mail címet engedélyezne - csak a pénzét veszik!

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

  4. 9
  5. 10

    A kifejezés megírásának sokkal egyszerűbb módja van:
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    - A végső módosítóval / i nincs szükség a nagybetűs tartomány megadására.
    - Nem ismerek ilyet TLD számokkal.
    Mellékesen említem: megengedem a TLD-t legfeljebb 6 karakterrel; újak rendszeresen érkeznek, és soha nem lehet tudni (nos, a jövőbenieknek még számai is lehetnek, tudom).

  6. 11

    Szia,

    Kipróbálom, hogy ezt egy létező formában valós időben használjam, de úgy tűnik, hogy ez nem valós időben érvényesül, mint például a jelszóerősség-ellenőrző ...

    Vagy csak ennyire tanácstalan vagyok, és ez nekem nem működik?

  7. 12

    btw, nagyon szeretem, amit itt folytatsz, az oktatóanyagok nagyon egyszerűek, én határozottan könyvjelzővel látom el ezt.

  8. 13
  9. 16
  10. 17

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

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

    Az elsőnél bármilyen hosszúságú TLD-t elfogadnának (ami nem belső szempontból hibás, mint mások rámutattak, de ha ez a szándék volt, akkor a kifejezés lerövidíthető).

  11. 18

    El tudná magyarázni ennek a kódnak a szabályos kifejezését és működését? Szintén a .test-ről - A .test alapértelmezett utasítás a javascriptben, hogy ellenőrizze a fenti kódban szereplő dolgokat?

  12. 19

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

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

    }
    Deepak Rai
    Varanasi

  13. 20

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

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

    }
    Deepak Rai
    Varanasi

  14. 21
  15. 22
  16. 23

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

    teszt

    és elhaladt a regexen ... észrevettem, hogy nincs hiánya a "" elől. í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 pontos, például ez rendben lenne john_doe. @ gmail.com ami valójában nem érvényes e-mail cím (a pont nem engedélyezhető utolsó karakterként az e-mail helyi részében).
    Azt is elfogadná john…doe@gmail.com ami szintén érvénytelen, mivel egy szekvenciában nem lehet több, mint egy pont.

    Ez csak néhány hiba, amelyet első látásra észrevettem.
    A szándékom nem csupán arra utalni, hogy rámutassak erre, ha valaki biztonsági ellenőrzésként tervezi használni - nem elég biztonságos.

    Az érvényes e-mail címekről lásd: http://en.wikipedia.org/wiki/E-mail_address

  19. 28

    Deepak,

    Valójában szerintem menekülést kell alkalmaznia a pontra („.”). Tehát a funkciójának inkább a következőknek kell lennie:

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

    }

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

    Üdvözlettel,

    Federico

  20. 29

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

    if (fld.value == „Írja be az e-mail címét”) {

    error = “Kérjük, adja meg e-mail címét.n”;
    } else if (! emailFilter.test (tfld)) {// tiltott karakterek tesztelésére szolgáló e-mailt

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

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

  21. 30

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

    if (fld.value == „Írja be az e-mail címét”) {

    error = “Kérjük, adja meg e-mail címét.n”;
    } else if (! emailFilter.test (tfld)) {// tiltott karakterek tesztelésére szolgáló e-mailt

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

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

  22. 31

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

    if (fld.value == „Írja be az e-mail címét”) {

    error = “Kérjük, adja meg e-mail címét.n”;
    } else if (! emailFilter.test (tfld)) {// tiltott karakterek tesztelésére szolgáló e-mailt

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

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

  23. 32

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

    if (fld.value == „Írja be az e-mail címét”) {

    error = “Kérjük, adja meg e-mail címét.n”;
    } else if (! emailFilter.test (tfld)) {// tiltott karakterek tesztelésére szolgáló e-mailt

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

    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.