Проверете ја адресата за е-пошта со 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

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

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

  2. 5
  3. 7

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

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

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

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

    • 8

      Здраво Рег,

      Можете да го испробате Regex користејќи Регекс тестер на Интернет.

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

      Постојат неколку причини да не дозволите некој да внесе неважечка адреса за е-пошта:
      1. getе се изнервираат од вас кога е-поштата што ја очекуваа не помине - без оглед дали сте биле виновни, адресата е неправилно внесена.
      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

    Само FYI; Јас не го пробав решението на Аде, но шемата погоре не ги потврдува адресите за е-пошта со апострофи во нив .. (на пример, Mike.O'Hare@Whatever.com). Апострофите се валидни според RFC 2821/2822 -> http://www.faqs.org/rfcs/rfc2822.html

    ХТХ,
    Санџај

  9. 16
  10. 17

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

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

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

  11. 18

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

  12. 19
  13. 20

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

    функција потврди Е-пошта (ID)
    {
    var emailPattern = /^^a-zA-Z0-9._-]
    вратете ја е-поштаPattern.test (id);

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

  14. 21
  15. 22
  16. 23

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

    тест @ тест

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

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

  17. 24
  18. 27

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

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

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

  19. 28

    Дипак,

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

    функција потврди Е-пошта (ID)
    {
    var emailPattern = /^^a-zA-Z0-9._-]
    вратете ја е-поштаPattern.test (id);

    }

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

    Со почит,

    Federico

  20. 29

    функција потврди Е-пошта (fld) {
    var грешка = ””;
    var tfld = трим (fld.вредност); // вредноста на полето со отсечено бел простор
    var е-пошта Филтер = /^^^@ +++ [Составот].
    var legalChars = / [(),;: \ ”[]] /;

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

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

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

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

  21. 30

    функција потврди Е-пошта (fld) {
    var грешка = ””;
    var tfld = трим (fld.вредност); // вредноста на полето со отсечено бел простор
    var е-пошта Филтер = /^^^@ +++ [Составот].
    var legalChars = / [(),;: \ ”[]] /;

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

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

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

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

  22. 31

    функција потврди Е-пошта (fld) {
    var грешка = ””;
    var tfld = трим (fld.вредност); // вредноста на полето со отсечено бел простор
    var е-пошта Филтер = /^^^@ +++ [Составот].
    var legalChars = / [(),;: \ ”[]] /;

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

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

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

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

  23. 32

    функција потврди Е-пошта (fld) {
    var грешка = ””;
    var tfld = трим (fld.вредност); // вредноста на полето со отсечено бел простор
    var е-пошта Филтер = /^^^@ +++ [Составот].
    var legalChars = / [(),;: \ ”[]] /;

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

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

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

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

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

Што мислите?

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