JavaScript və Adi ifadələrlə elektron poçt ünvanınızı yoxlayın

Bir müddət əvvəl a JavaScript və Normal İfadələrdən istifadə edərək Şifrə Gücünün Yoxlanışı. Eyni qeyddə, eyni normal ifadə (regex) metodologiyasından istifadə edərək bir e-poçt adresinin quruluşunu da yoxlaya bilərsiniz.

Forma elementiniz varsa id = "emailaddress" və bir forma əlavə edin onSubmit = ”return checkEmail ();“, Bu e-poçt ünvanı etibarlı bir quruluşa sahibdirsə yoxsa bir xəbərdarlıq qaytarmaq üçün istifadə edə biləcəyiniz bir Javascript funksiyadır:

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

Funksiya, e-poçtun məzmununu filtrlə təsdiqləyir. Müqayisə uğursuz olarsa, bir xəbərdarlıq açılır və fokusu yenidən e-poçt ünvanı sahəsinə qaytarır!

41 Şərhlər

  1. 1

    Birdən çox e-poçt ünvanı olan formalar üçün class = ”emailaddress” etmək yaxşı olardı. Prototype.js kitabxananız varsa (http://www.prototypejs.org) səhifəyə daxil olaraq belə bir şey edə bilərsiniz:

    var valid = true;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$ ('. emailaddress'). hər biri (function (email) {
    əgər (! filter.test (email.value)) {
    uyarı (? Xahiş edirəm etibarlı bir e-poçt ünvanı verin?);
    email.focus;
    etibarlı = yalan;
    }
    });
    qayıdış etibarlı;

  2. 5
  3. 7

    Fikri bəyənirəm, amma hansının qanuni e-poçt ünvanını qəbul etmədiyi və hansı qeyri-qanuni ünvana icazə verdiyi təsvir olunmadan bu müntəzəm ifadəni qəbul etməkdə tərəddüd edərdim.

    Hansı halları əhatə etmədiyinin izahı ilə yanaşı layiqli bir iş görən müntəzəm bir ifadə nümunəsi üçün buna baxın:

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

    Şəxsi seçimim sadə halların əksəriyyətini əhatə etmək və rədd etmək əvəzinə hər şey üçün bir xəbərdarlıq etməkdir. Bob həqiqətən istəyirsə təqdim etsin bob@com.museum daha çox bob@museum.com, niyə ona icazə vermirsən?

    • 8

      Salam Reg,

      Bir istifadə edərək Regex'i sınaqdan keçirə bilərsiniz Onlayn Regex Tester.

      Ayrıca, təmin etmək istəsəniz edilə bilən daha çox şey var e-mail RFC-yə uyğun olaraq etibarlıdır.

      Birinin etibarsız bir e-poçt ünvanı daxil etməsinə icazə verməməyin bir neçə səbəbi var:
      1. Gözlədikləri e-poçtun gəlmədiyi zaman onlar sizə əsəbləşəcəklər - günahınız olub-olmamasından asılı olmayaraq ünvan səhv daxil edildi.
      2. com.museum etibarlı bir domen idisə və deyək ki, Yahoo! idarə etdi - geri dönən hər hansı bir e-poçt ünvanı, şirkətinizin e-poçt çatdırılması üçün nüfuzuna mənfi təsir göstərəcəkdir. Bu, şirkətinizin bütün elektron poçtlarının bloklanmasına səbəb ola bilər.
      3. E-poçt xidmət təminatçınız sizə girməyə icazə veribsə bob@com.museumAyrıca, e-poçt adresinə göndərilən hər bir e-poçt üçün sıçramalar səbəbindən bu ünvanı abunə etməyənədək ödəyəcəksiniz. Bu kimi etibarsız bir e-poçt ünvanına icazə verəcək hər hansı bir ESP-dən çəkinərdim - sadəcə pulunuzu götürürlər!

      Durdurduğunuz üçün təşəkkür edirik!
      Doug

  4. 9
  5. 10

    İfadəni yazmağın çox sadə yolu var:
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    - Son modifikator / i ilə yuxarı iş aralığını göstərməyə ehtiyac yoxdur.
    - Heç birini bilmirəm TLD içərisindəki rəqəmlərlə.
    Bir qeyddə TLD-yə 6 işarəyə qədər icazə verirəm; yeniləri mütəmadi olaraq gəlir və sən heç bilmirsən (gələcəkdə bəzilərinin içərisində rəqəmlər də ola bilər, bilirəm).

  6. 11

    Salam,

    Bunu real vaxt rejimində mövcud formada istifadə etməyi düşünürəm, ancaq parol möhkəmliyi yoxlayıcısı kimi real vaxtda təsdiqlənmir ...

    Yoxsa mən yalnız o qədər ağılsızam və bu mənim üçün işləmir?

  7. 12

    btw, burda getdiklərinizi çox bəyənirəm, dərsləriniz çox sadədir, mən mütləq buranı işarələyəcəm ....

  8. 13
  9. 16
  10. 17

    Yalnız kiçik bir düzəliş: Normal ifadənin sonunda əlavə () + var. Oxunmalıdır:

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

    Birincisi ilə hər hansı bir uzunluqda TLD qəbul ediləcək (bu, başqalarının da qeyd etdiyi kimi daxili cəhətdən səhv deyildir, amma bu niyyət olsa ifadəni qısalda bilər).

  11. 18

    Xahiş edirəm bu kodun müntəzəm ifadəsini və necə işlədiyini izah edə bilərsiniz? .Test haqqında da - .test yuxarıdakı kodda etdiyiniz kimi şeyləri yoxlamaq üçün javascriptdəki standart bir bəyanatdır?

  12. 19

    Bu e-poçt ifadəsi üçün qısa bir koddur.

    funksiya doğrulamaEmail (id)
    {
    var emailPattern = /^(a-zA-Z0-9._-................+@ [a-zA-Z0-9.-] ++ [a-zA-Z] {2,4}$/;
    emailPattern.test (id) qayıt;

    }
    Deepak Rai
    varanasi

  13. 20

    Bu e-poçt ifadəsi üçün qısa bir koddur.

    funksiya doğrulamaEmail (id)
    {
    var emailPattern = /^(a-zA-Z0-9._-................+@ [a-zA-Z0-9.-] ++ [a-zA-Z] {2,4}$/;
    emailPattern.test (id) qayıt;

    }
    Deepak Rai
    varanasi

  14. 21
  15. 22
  16. 23

    Təşəkkürlər, amma bu regexdə bir səhv var. Mən regex mütəxəssisi deyiləm, ancaq elektron poçtu sınamışam:

    test @ test

    və regex-dən keçdi ... "" -dən qaçmağın olmadığını gördüm. belə olmalıdır:

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

  17. 24
  18. 27

    Yaxşı, bu sadəcə kobud bir yoxlama, lakin 100% dəqiq deyil, məsələn bu yaxşı olar john_doe. @ gmail.com əslində etibarlı bir e-poçt ünvanı deyil (e-poçtun yerli hissəsində son bir simvol kimi nöqtəyə icazə verilmir).
    Həm də qəbul edərdim john…doe@gmail.com bu da etibarsızdır, çünki ardıcıllıqla birdən çox nöqtə ola bilməz.

    Bunlar ilk baxışda gördüyüm bəzi qüsurlardır.
    Niyyətim, bunu kiminsə təhlükəsizlik yoxlaması kimi istifadə etməyi planlaşdırdığı halda bunu qeyd etmək üçün xəyanət etmək deyil - kifayət qədər etibarlı deyil.

    Etibarlı e-poçt ünvanları haqqında məlumat üçün buraya baxın: http://en.wikipedia.org/wiki/E-mail_address

  19. 28

    Deepak,

    Əslində nöqtə üçün qaçış tətbiq etməlisiniz (“.”). Beləliklə, funksiyanız bunun yerinə olmalıdır:

    funksiya doğrulamaEmail (id)
    {
    var emailPattern = /^(a-zA-Z0-9._-................+@ [a-zA-Z0-9.-] ++ [a-zA-Z] {2,4}$/;
    emailPattern.test (id) qayıt;

    }

    Əks təqdirdə, nöqtə "hər hansı bir xarakter" deməkdir. İnanıram ki, bu cür xüsusi simvollardan qaçmaq lazımdır.

    Regards,

    Federico

  20. 29

    funksiya validateEmail (fld) {
    var error = "";
    var tfld = trim (fld.value); // boşluq kəsilmiş sahənin dəyəri
    var emailFilter = /^(^@ :+@(^@. :+.(^@ :*ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    if (fld.value == “E-poçt adresinizi daxil edin”) {

    error = “Xahiş edirəm e-poçt adresinizi daxil edin.n”;
    } başqa halda (! emailFilter.test (tfld)) {// qanunsuz simvollar üçün e-poçtu sınayın

    error = “Xahiş edirəm etibarlı bir e-poçt ünvanı daxil edin.n”;
    } başqa halda (fld.value.match (illegalChars)) {

    error = “Xahiş edirəm etibarlı bir e-poçt ünvanı daxil edin.n”;
    }
    qayıtma xətası;
    }

  21. 30

    funksiya validateEmail (fld) {
    var error = "";
    var tfld = trim (fld.value); // boşluq kəsilmiş sahənin dəyəri
    var emailFilter = /^(^@ :+@(^@. :+.(^@ :*ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    if (fld.value == “E-poçt adresinizi daxil edin”) {

    error = “Xahiş edirəm e-poçt adresinizi daxil edin.n”;
    } başqa halda (! emailFilter.test (tfld)) {// qanunsuz simvollar üçün e-poçtu sınayın

    error = “Xahiş edirəm etibarlı bir e-poçt ünvanı daxil edin.n”;
    } başqa halda (fld.value.match (illegalChars)) {

    error = “Xahiş edirəm etibarlı bir e-poçt ünvanı daxil edin.n”;
    }
    qayıtma xətası;
    }

  22. 31

    funksiya validateEmail (fld) {
    var error = "";
    var tfld = trim (fld.value); // boşluq kəsilmiş sahənin dəyəri
    var emailFilter = /^(^@ :+@(^@. :+.(^@ :*ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    if (fld.value == “E-poçt adresinizi daxil edin”) {

    error = “Xahiş edirəm e-poçt adresinizi daxil edin.n”;
    } başqa halda (! emailFilter.test (tfld)) {// qanunsuz simvollar üçün e-poçtu sınayın

    error = “Xahiş edirəm etibarlı bir e-poçt ünvanı daxil edin.n”;
    } başqa halda (fld.value.match (illegalChars)) {

    error = “Xahiş edirəm etibarlı bir e-poçt ünvanı daxil edin.n”;
    }
    qayıtma xətası;
    }

  23. 32

    funksiya validateEmail (fld) {
    var error = "";
    var tfld = trim (fld.value); // boşluq kəsilmiş sahənin dəyəri
    var emailFilter = /^(^@ :+@(^@. :+.(^@ :*ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    if (fld.value == “E-poçt adresinizi daxil edin”) {

    error = “Xahiş edirəm e-poçt adresinizi daxil edin.n”;
    } başqa halda (! emailFilter.test (tfld)) {// qanunsuz simvollar üçün e-poçtu sınayın

    error = “Xahiş edirəm etibarlı bir e-poçt ünvanı daxil edin.n”;
    } başqa halda (fld.value.match (illegalChars)) {

    error = “Xahiş edirəm etibarlı bir e-poçt ünvanı daxil edin.n”;
    }
    qayıtma xətası;
    }

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

Siz nə düşünürsünüz?

Bu sayt spam azaldılması üçün Akismet istifadə edir. Yorumunuzun necə işləndiyini öyrənin.