Проверете ја адресата за е-пошта со JavaScript и редовни изрази

Пред некое време поставив а Проверувач на јачина на лозинка со употреба на JavaScript и редовни изрази. На истата белешка, можете исто така да ја проверите структурата на е-адреса користејќи ја истата редовна методологија за изразување (regex).

Ако вашиот елемент на форма има id = ”адреса на е-пошта” и додавате образец onSubmit = ”врати чек Емаил ();„, Ова е функција Javascript што можете да ја искористите за да вратите предупредување ако е-адресата има валидна структура или не:

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

Функцијата ја потврдува содржината на е-поштата до онаа на филтерот. Ако не успее споредбата, се појавува предупредување и го враќа фокусот назад во полето за адреса за е-пошта!

41 Коментари

  1. 1

    За формулари со повеќе адреси на е-пошта, би било добро да се направи class=”emailaddress”. Ако ја имате библиотеката prototype.js (http://www.prototypejs.org) вклучено на страницата, можете да направите нешто вака:

    var valid = точно;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$('.адреса на е-пошта').секоја(функција(е-пошта) {
    ако (!filter.test(email.value)) {
    alert(?Ве молиме наведете валидна адреса за е-пошта?);
    е-пошта.фокус;
    валидно = неточно;
    }
    });
    враќање валидно;

  2. 5
  3. 7

    Ми се допаѓа идејата, но би се двоумел дали да го прифатам овој конкретен редовен израз без опис на тоа кои правни адреси на е-пошта не ги прифаќа и кои незаконски адреси дозволува.

    За пример на регуларен израз кој прави пристојна работа заедно со објаснување кои случаи не ги опфаќа, видете го ова:

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

    Мојата лична претпочита е да ги опфатам повеќето едноставни случаи и да издадам предупредување за сè друго, наместо да го отфрлам. Ако Боб навистина сака да поднесе bob@com.museum наместо bob@museum.com, зошто да не му дозволиме?

    • 8

      Здраво Рег,

      Можете да го тестирате Regex користејќи ан Онлајн Регекс тестер.

      Исто така, дефинитивно има многу повеќе што може да се направи ако сакате да обезбедите e-mail адреса важи во согласност со RFC.

      Постојат неколку причини да не дозволите некој да внесе неважечка адреса на е-пошта:
      1. Ќе ви се нервираат кога нема да им стигне е-поштата што ја очекувале – без разлика дали вината била или не, адресата е погрешно внесена.
      2. Ако com.museum беше валиден домен и, да речеме, Yahoo! управуваше со него - секоја адреса на е-пошта што отскокна ќе има негативно влијание врз репутацијата на вашата компанија за испорака на е-пошта. Ова може да доведе до блокирање на целата е-пошта на вашата компанија.
      3. Ако давателот на услугата за е-пошта ви дозволи да влезете bob@com.museum, би платиле и за секоја е-пошта испратена на таа адреса на е-пошта додека не ја отпишат таа адреса поради отскокнување. Јас би се скршил од кој било ESP што би дозволил неважечка адреса на е-пошта како таа - тие само ви ги земаат парите!

      Ви благодариме за запирање!
      Doug

  4. 9
  5. 10

    Има многу поедноставен начин да се напише изразот:
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    – Со последниот модификатор /i нема потреба да се означува опсегот на големи букви.
    – Не знам за ниеден TLD со бројки во него.
    Од друга страна, дозволувам TLD со најмногу 6 знаци; нови пристигнуваат редовно и никогаш не се знае (добро, некои идни може да имаат и бројки во него, знам).

  6. 11

    Здраво,

    Се обидувам да го користам ова во постоечка форма во реално време, но се чини дека ова не се потврдува во реално време како што е вашата проверка на јачината на лозинката…

    Или, дали сум толку бесмислен и не ми функционира?

  7. 12
  8. 13
  9. 16
  10. 17

    Само мала корекција: Правилниот израз има дополнителна ()+ на крајот. Треба да гласи:

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

    Со првиот би биле прифатени TLD со која било должина (што не е суштински погрешно како што истакнаа другите, но ако тоа беше намерата, изразот може да се скрати).

  11. 18

    Можете ли да го објасните редовниот израз на овој код и како функционира? Исто така за .test – Дали .test е стандардна изјава во Javascript за да ги проверите работите како што правевте во горниот код?

  12. 19
  13. 20

    Ова е краток код за изразување на е-пошта-

    функција validateEmail(ID)
    {
    var emailПаттер = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
    врати emailPattern.test(id);

    }
    Дипак Раи
    варанаси

  14. 21
  15. 22
  16. 23

    Благодарам, но има грешка во овој регекс. Јас не сум експерт за регекс, но пробав е-пошта:

    test@test

    и го помина регексот... Забележав дека недостасува да избега од „“. така треба да биде:

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

  17. 24
  18. 27

    Па, ова е само груба проверка, но не е 100% точно, на пример, ова би било во ред john_doe.@gmail.com што всушност не е валидна адреса за е-пошта (точката не е дозволена како последен знак во локалниот дел од е-поштата).
    Исто така би прифатил Џон…doe@gmail.com што исто така е неважечко бидејќи не може да има повеќе од една точка во низата.

    Ова се само некои недостатоци кои ги забележав на прв поглед.
    Мојата намера не е да се зафркавам само да го истакнам ова во случај некој да планира да го користи ова како безбедносна проверка - недоволно безбеден.

    За информации за валидни адреси на е-пошта, проверете го ова: http://en.wikipedia.org/wiki/E-mail_address

  19. 28

    Дипак,

    Всушност, мислам дека треба да примените бегство за точката (““). Значи, наместо тоа, вашата функција треба да биде:

    функција validateEmail(ID)
    {
    var emailПаттер = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
    врати emailPattern.test(id);

    }

    Во спротивно, точката би значела „било кој лик“. Верувам дека треба да се избега од таквите посебни ликови.

    Со почит,

    Federico

  20. 29

    функција validateEmail(fld) {
    var грешка=””;
    var tfld = trim(fld.вредност); // вредност на полето со исклучено празно место
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    varilegalChars= /[(),;:\”[]]/ ;

    if (fld.value == „Внесете ја вашата адреса на е-пошта“) {

    error = „Ве молиме внесете ја вашата e-mail адреса.n“;
    } else if (!emailFilter.test(tfld)) { //тестирајте е-пошта за нелегални знаци

    грешка = „Внесете валидна адреса за е-пошта.n“;
    } else if (fld.value.match(illegalChars)) {

    грешка = „Внесете валидна адреса за е-пошта.n“;
    }
    грешка при враќањето;
    }

  21. 30

    функција validateEmail(fld) {
    var грешка=””;
    var tfld = trim(fld.вредност); // вредност на полето со исклучено празно место
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    varilegalChars= /[(),;:\”[]]/ ;

    if (fld.value == „Внесете ја вашата адреса на е-пошта“) {

    error = „Ве молиме внесете ја вашата e-mail адреса.n“;
    } else if (!emailFilter.test(tfld)) { //тестирајте е-пошта за нелегални знаци

    грешка = „Внесете валидна адреса за е-пошта.n“;
    } else if (fld.value.match(illegalChars)) {

    грешка = „Внесете валидна адреса за е-пошта.n“;
    }
    грешка при враќањето;
    }

  22. 31

    функција validateEmail(fld) {
    var грешка=””;
    var tfld = trim(fld.вредност); // вредност на полето со исклучено празно место
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    varilegalChars= /[(),;:\”[]]/ ;

    if (fld.value == „Внесете ја вашата адреса на е-пошта“) {

    error = „Ве молиме внесете ја вашата e-mail адреса.n“;
    } else if (!emailFilter.test(tfld)) { //тестирајте е-пошта за нелегални знаци

    грешка = „Внесете валидна адреса за е-пошта.n“;
    } else if (fld.value.match(illegalChars)) {

    грешка = „Внесете валидна адреса за е-пошта.n“;
    }
    грешка при враќањето;
    }

  23. 32

    функција validateEmail(fld) {
    var грешка=””;
    var tfld = trim(fld.вредност); // вредност на полето со исклучено празно место
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    varilegalChars= /[(),;:\”[]]/ ;

    if (fld.value == „Внесете ја вашата адреса на е-пошта“) {

    error = „Ве молиме внесете ја вашата e-mail адреса.n“;
    } else if (!emailFilter.test(tfld)) { //тестирајте е-пошта за нелегални знаци

    грешка = „Внесете валидна адреса за е-пошта.n“;
    } else if (fld.value.match(illegalChars)) {

    грешка = „Внесете валидна адреса за е-пошта.n“;
    }
    грешка при враќањето;
    }

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

Што мислите?

Оваа страница користи Akismet за намалување на спам. Научете како се обработува вашиот коментар.