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!
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;
Rahmat Ade! Men darslar va JavaScript haqida ko'proq bilishim kerak!
Dagning asl misoli ajoyib edi, lekin bu juda sovuq! Men sinfga ega elementlarni shu tarzda qayta ishlashingiz mumkinligini bilmasdim va funktsional sintaksis shirin.
Ade va uning jamoasi ajoyib!
Yaxshi, men sizga har doim qandaydir yomon skriptlar uchun ishonishim mumkin! 🙂
Rahmat Toni!
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?
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
Zo'r, menga kerak bo'lgan narsa!
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).
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?
btw, menga bu yerda nima bo'layotgani juda yoqadi, sizning darsliklaringiz juda oddiy, men buni albatta belgilab qo'yaman….
Faqat ma'lumot; Men Adening yechimini sinab ko'rmadim, lekin yuqoridagi naqsh ulardagi apostrofli elektron pochta manzillarini tasdiqlamaydi.. (masalan, Mike.O'Hare@Whatever.com). Apostroflar RFC 2821/2822 –> bo'yicha amal qiladi http://www.faqs.org/rfcs/rfc2822.html
HTH,
Sanjay
Shuningdek, u ortiqcha belgi bilan ishlamaydi, bu amal qiladi.
qarang: http://www.dominicsayers.com/isemail/
Kattaroq eslatmada, bu kodni kesish va joylashtirish bilan bog'liq asosiy muammo bo'lib, u to'liq muhokamaga loyiqdir.
@robbyslaughter.com
siz aqldan ozgansiz..
u yaxshi ishlayapti..!@
WordPress-dagi izohlarda soxta elektron pochta manzillaridan qochish uchun yechim topsak yaxshi bo'lardi
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).
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?
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
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
Katta rahmat aka. Bu menga juda yordam berdi 🙂
Amanda
kod uchun rahmat!
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})+$/
Men bilan aylanib yuraman
/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$ /
va .info haqida nima deyish mumkin?
ey ahmoq ... 3 yil oldin? :S
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
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
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;
}
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;
}
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;
}
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;
}
funksiya trim(lar)i
{
return s.replace(/^s+|s+$/, ”);
}
funksiya trim(lar)i
{
return s.replace(/^s+|s+$/, ”);
}
".fokus" funksiya bo'lib, u quyidagicha bo'lishi kerak:
email.focus()
".fokus" funksiya bo'lib, u quyidagicha bo'lishi kerak:
email.focus()
ajoyib
Gem kabi ishlaydi. Javascriptda reg ifodalaridan ajoyib foydalanish…
Bu marvaridning yorilishi…
“mmm@mmm..com” manzili qabul qilinadi. Ammo ikkita nuqta birgalikda to'g'ri kelmaydi.
Do'stlar, foydalaning. Bu hech qanday JS tekshiruvini talab qilmaydi.
Lekin faqat zamonaviy brauzerlar bilan ishlaydi. Afsuski, dunyo haligacha yetib bormadi. —
IPhone uchun pochta qutisidan yuborilgan