Elektron pochta manzilini JavaScript va oddiy iboralar bilan tekshiring

Biroz oldin men JavaScript va oddiy iboralar yordamida parolning mustahkamligini tekshiruvchi. Xuddi shu yozuvda siz elektron pochta manzilining tuzilishini bir xil oddiy ifoda (regex) metodologiyasidan foydalangan holda tekshirishingiz mumkin.

Agar sizning ariza elementingizda id = "email manzili" va siz shaklni qo'shasiz onSubmit = ”return checkEmail ();", Bu Javascript funktsiyasidir, agar siz elektron pochta manzilingiz tuzilishga ega bo'lsa yoki yo'q bo'lsa, ogohlantirishni qaytarishingiz mumkin:

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

Funktsiya elektron pochtaning tarkibini filtr bilan tasdiqlaydi. Agar taqqoslash muvaffaqiyatsiz bo'lsa, u ogohlantiruvchi signalni ochadi va elektron pochta manzili maydoniga qaytadi!

41 Comments

  1. 1

    Bir nechta elektron pochta manzillari bo'lgan shakllar uchun class="elektron pochta manzili" ni bajarish yaxshi bo'lardi. Agar sizda prototype.js kutubxonasi bo'lsa (http://www.prototypejs.org) sahifaga kiritilgan, siz shunday qilishingiz mumkin:

    var valid = true;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$('.emailaddress').each(funksiya(elektron pochta) {
    agar (!filtr.test(email.value)) {
    alert(?Iltimos, toʻgʻri elektron pochta manzilini kiriting?);
    email.focus;
    haqiqiy = noto'g'ri;
    }
    });
    qaytarish amal qiladi;

  2. 5
  3. 7

    Menga bu g‘oya yoqadi, lekin qaysi qonuniy elektron pochta manzillarini qabul qilmasligi va qaysi noqonuniy manzillarga ruxsat berishini ta’riflamay turib, ushbu oddiy iborani qabul qilishda ikkilanaman.

    Qaysi holatlar qamrab olinmasligini tushuntirish bilan birga munosib ishni bajaradigan muntazam iboraga misol uchun buni ko'ring:

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

    Mening shaxsiy xohishim oddiy holatlarning ko'pini qamrab olish va uni rad etishdan ko'ra, qolgan hamma narsa uchun ogohlantirish berishdir. Agar Bob haqiqatan ham xohlasa, topshiring bob@com.museum dan ko'ra bob@museum.com, nega unga ruxsat bermaysiz?

    • 8

      Salom Reg,

      a yordamida Regexni sinab ko'rishingiz mumkin Onlayn Regex Tester.

      Bundan tashqari, agar siz buni ta'minlashni istasangiz, albatta ko'p narsalarni qilishingiz mumkin elektron pochta manzili RFCga muvofiq amal qiladi.

      Kimdir noto'g'ri elektron pochta manzilini kiritishiga ruxsat bermaslikning bir necha sabablari bor:
      1. Ular kutgan elektron pochta manziliga etib bormasa, sizdan g'azablanishadi - bu sizning aybingizmi yoki yo'qligidan qat'i nazar, manzil noto'g'ri kiritilgan.
      2. Agar com.museum haqiqiy domen bo'lsa va aytaylik, Yahoo! uni boshqargan - qaytgan har qanday elektron pochta manzili kompaniyangizning elektron pochta xabarlarini yetkazib berish bo'yicha obro'siga salbiy ta'sir qiladi. Bu kompaniyangizning barcha elektron pochta manzillarining bloklanishiga olib kelishi mumkin.
      3. Agar elektron pochta xizmati provayderingiz kirishga ruxsat bergan bo'lsa bob@com.museum, siz o'sha elektron pochta manziliga yuborilgan har bir elektron pochta uchun to'lovni amalga oshirgan bo'lasiz, toki ular o'tishlar sababli obunani bekor qilmaguncha. Men shunga o'xshash yaroqsiz elektron pochta manziliga ruxsat beradigan har qanday ESPdan saqlanaman - ular shunchaki pulingizni olishyapti!

      To'xtatganingiz uchun tashakkur!
      Doug

  4. 9
  5. 10

    Ifodani yozishning ancha oddiy usuli bor:
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    – Oxirgi modifikator /i bilan katta harflar oralig'ini ko'rsatishga hojat yo'q.
    - Hech qaysisini bilmayman TLD unda raqamlar bilan.
    Yon eslatma, men 6 tagacha belgili TLD ga ruxsat beraman; yangilari muntazam ravishda keladi va siz hech qachon bilmaysiz (yaxshi, kelajakda ba'zilarida raqamlar ham bo'lishi mumkin, bilaman).

  6. 11

    Salom,

    Men buni real vaqtda mavjud shaklda ishlatmoqchiman, lekin bu sizning parolingiz kuchini tekshirgich kabi real vaqtda tasdiqlanmaydi…

    Yoki men shunchalik bexabarmanmi va bu men uchun ishlamaydi?

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

    Kichkina tuzatish: oddiy iboraning oxirida qo'shimcha ()+ mavjud. U o'qilishi kerak:

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

    Birinchisi bilan har qanday uzunlikdagi TLDlar qabul qilinadi (boshqalar ta'kidlaganidek, bu mutlaqo noto'g'ri emas, lekin agar bu niyat bo'lsa, ifodani qisqartirish mumkin edi).

  11. 18

    Iltimos, ushbu kodning muntazam ifodasini va uning qanday ishlashini tushuntirib bera olasizmi? Shuningdek, .test haqida – .test yuqoridagi koddagi kabi narsalarni tekshirish uchun javascriptdagi standart bayonotmi?

  12. 19

    Bu elektron pochtani ifodalash uchun qisqa kod -

    validateEmail(id) funksiyasi
    {
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
    emailPattern.test(id)ni qaytaring;

    }
    Dipak Rai
    varanasi

  13. 20

    Bu elektron pochtani ifodalash uchun qisqa kod -

    validateEmail(id) funksiyasi
    {
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
    emailPattern.test(id)ni qaytaring;

    }
    Dipak Rai
    varanasi

  14. 21
  15. 22
  16. 23

    Rahmat, lekin bu regexda xatolik bor. Men regex mutaxassisi emasman, lekin elektron pochtani sinab ko'rdim:

    test@test

    va u regexdan o'tdi... Men "." dan qochib qutula olmayotganini payqadim. shunday bo'lishi kerak:

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

  17. 24
  18. 27

    Xo'sh, bu shunchaki qo'pol tekshiruv, lekin 100% aniq emas, masalan, bu yaxshi bo'lar edi john_doe.@gmail.com bu aslida haqiqiy elektron pochta manzili emas (elektron pochtaning mahalliy qismida oxirgi belgi sifatida nuqta qo'yilmaydi).
    Shuningdek, u qabul qiladi john…doe@gmail.com Bu ham yaroqsiz, chunki ketma-ketlikda bir nechta nuqta bo'lishi mumkin emas.

    Bu faqat bir qarashda sezgan kamchiliklarim.
    Mening niyatim, agar kimdir buni xavfsizlik tekshiruvi sifatida ishlatishni rejalashtirayotgan bo'lsa, buni ta'kidlash uchun emas - etarlicha xavfsiz emas.

    Yaroqli elektron pochta manzillari haqida ma'lumot olish uchun buni tekshiring: http://en.wikipedia.org/wiki/E-mail_address

  19. 28

    Dipak,

    Menimcha, siz nuqta (".") uchun qochishni qo'llashingiz kerak. Shunday qilib, sizning funktsiyangiz o'rniga:

    validateEmail(id) funksiyasi
    {
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
    emailPattern.test(id)ni qaytaring;

    }

    Aks holda, nuqta "har qanday belgi" degan ma'noni anglatadi. Menimcha, bunday maxsus belgilardan qochish kerak.

    Regards,

    Federico

  20. 29

    validateEmail(fld) funksiyasi
    var error=””;
    var tfld = trim(fld.value); // bo'sh joy kesilgan maydon qiymati
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

    agar (fld.value == "Elektron pochta manzilingizni kiriting") {

    error = “Iltimos, elektron pochta manzilingizni kiriting.n”;
    } else if (!emailFilter.test(tfld)) { //elektron pochtada noqonuniy belgilar mavjudligini tekshirish

    xato = "Iltimos, to'g'ri elektron pochta manzilini kiriting.n";
    } else if (fld.value.match(illegalChars)) {

    xato = "Iltimos, to'g'ri elektron pochta manzilini kiriting.n";
    }
    qaytish xatosi;
    }

  21. 30

    validateEmail(fld) funksiyasi
    var error=””;
    var tfld = trim(fld.value); // bo'sh joy kesilgan maydon qiymati
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

    agar (fld.value == "Elektron pochta manzilingizni kiriting") {

    error = “Iltimos, elektron pochta manzilingizni kiriting.n”;
    } else if (!emailFilter.test(tfld)) { //elektron pochtada noqonuniy belgilar mavjudligini tekshirish

    xato = "Iltimos, to'g'ri elektron pochta manzilini kiriting.n";
    } else if (fld.value.match(illegalChars)) {

    xato = "Iltimos, to'g'ri elektron pochta manzilini kiriting.n";
    }
    qaytish xatosi;
    }

  22. 31

    validateEmail(fld) funksiyasi
    var error=””;
    var tfld = trim(fld.value); // bo'sh joy kesilgan maydon qiymati
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

    agar (fld.value == "Elektron pochta manzilingizni kiriting") {

    error = “Iltimos, elektron pochta manzilingizni kiriting.n”;
    } else if (!emailFilter.test(tfld)) { //elektron pochtada noqonuniy belgilar mavjudligini tekshirish

    xato = "Iltimos, to'g'ri elektron pochta manzilini kiriting.n";
    } else if (fld.value.match(illegalChars)) {

    xato = "Iltimos, to'g'ri elektron pochta manzilini kiriting.n";
    }
    qaytish xatosi;
    }

  23. 32

    validateEmail(fld) funksiyasi
    var error=””;
    var tfld = trim(fld.value); // bo'sh joy kesilgan maydon qiymati
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

    agar (fld.value == "Elektron pochta manzilingizni kiriting") {

    error = “Iltimos, elektron pochta manzilingizni kiriting.n”;
    } else if (!emailFilter.test(tfld)) { //elektron pochtada noqonuniy belgilar mavjudligini tekshirish

    xato = "Iltimos, to'g'ri elektron pochta manzilini kiriting.n";
    } else if (fld.value.match(illegalChars)) {

    xato = "Iltimos, to'g'ri elektron pochta manzilini kiriting.n";
    }
    qaytish xatosi;
    }

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

Siz nima deb o'ylaysiz?

Ushbu sayt spamni kamaytirish uchun Akismet-dan foydalanadi. Fikringiz ma'lumotlarining qanday ishlashini bilib oling.