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!
Çoxsaylı e-poçt ünvanları olan formalar üçün class=”emailaddress” etmək yaxşı olardı. Əgər prototype.js kitabxananız varsa (http://www.prototypejs.org) səhifəyə daxil olmaqla, 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})+$/;
$$('.e-poçt ünvanı').hər biri( funksiya(e-poçt) {
əgər (!filtr.test(e-poçt.dəyər)) {
alert(?Lütfən düzgün e-poçt ünvanı təqdim edin?);
email.focus;
etibarlı = yanlış;
}
});
qaytarılması etibarlıdır;
Təşəkkürlər Ade! Mən dərslər və JavaScript haqqında daha çox öyrənməliyəm!
Douqun orijinal nümunəsi gözəl idi, amma bu, dondurucudur! Mən bilmirdim ki, siz sinifli elementləri bu şəkildə emal edə bilərsiniz və funksional sintaksis şirindir.
Ade və komandası heyrətamizdir!
Əla, mən həmişə bəzi pis sərin ssenarilər üçün sizə arxalana bilərəm! 🙂
Təşəkkür edirik Tony!
Mən bu ideyanı bəyənirəm, lakin hansı hüquqi e-poçt ünvanlarını qəbul etmədiyini və hansı qeyri-qanuni ünvanlara icazə verdiyini təsvir etmədən bu xüsusi müntəzəm ifadəni qəbul etməkdə tərəddüd edərdim.
Hansı halları əhatə etmədiyinə dair izahatla yanaşı, layiqli iş görən müntəzəm ifadə nümunəsi üçün buna baxın:
http://www.regular-expressions.info/email.html
Mənim şəxsi üstünlüklərim sadə halların əksəriyyətini əhatə etmək və rədd etməkdənsə, hər şey üçün xəbərdarlıq etməkdir. Əgər Bob həqiqətən istəyirsə təqdim etsin bob@com.museum daha çox bob@museum.com, niyə ona icazə vermirsən?
Salam Reg,
a istifadə edərək Regex-i sınaqdan keçirə bilərsiniz Onlayn Regex Tester.
Bundan əlavə, təmin etmək istəyirsinizsə, mütləq daha çox şey edilə bilər e-mail RFC-yə uyğun olaraq etibarlıdır.
Kiminsə etibarsız e-poçt ünvanını daxil etməsinə icazə verməməyin bir neçə səbəbi var:
1. Ünvanın səhv daxil edilməsinin sizin günahınız olub-olmamasından asılı olmayaraq, gözlədikləri e-poçt keçmədikdə sizdən əsəbiləşəcəklər.
2. com.museum etibarlı domen olsaydı və deyək ki, Yahoo! onu idarə etdi - geri dönən hər hansı bir e-poçt ünvanı şirkətinizin e-poçt çatdırılması üçün reputasiyasına mənfi təsir göstərəcək. Bu, şirkətinizin bütün e-poçtlarının bloklanmasına səbəb ola bilər.
3. Əgər e-poçt provayderiniz daxil olmağa icazə veribsə bob@com.museum, siz həmçinin bu e-poçt ünvanına göndərilən hər bir e-poçt üçün onlar geri dönmələr səbəbindən həmin ünvanın abunəliyini ləğv edənə qədər ödəniş edərdiniz. Mən bu kimi etibarsız e-poçt ünvanına icazə verən hər hansı ESP-dən çəkinərdim – onlar sadəcə pulunuzu alırlar!
Durdurduğunuz üçün təşəkkür edirik!
Doug
Mükəmməl, mənə lazım olan şey!
İfadə yazmağın daha sadə yolu var:
var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
– Son dəyişdirici /i ilə böyük hərf aralığını göstərməyə ehtiyac yoxdur.
- Heç birindən xəbərim yoxdur TLD içində nömrələrlə.
Əlavə olaraq qeyd edim ki, 6 simvola qədər TLD-yə icazə verirəm; yeniləri müntəzəm olaraq gəlir və siz heç vaxt bilmirsiniz (yaxşı, bəzi gələcəklərin hətta nömrələri ola bilər, bilirəm).
Salam,
Mən bunu real vaxt rejimində mövcud formada istifadə etməyə çalışıram, lakin bu, parolunuzun gücü yoxlayıcısı kimi real vaxtda təsdiqlənmir...
Yoxsa mən bu qədər məlumatsızam və bu mənim üçün işləmir?
btw, burada baş verənləri çox bəyənirəm, dərslikləriniz çox sadədir, mən mütləq bunu qeyd edəcəm….
Sadəcə məlumat; Mən Ade-nin həllini sınamamışam, lakin yuxarıdakı nümunə apostroflu e-poçt ünvanlarını təsdiq etmir.. (məsələn, Mike.O'Hare@Whatever.com). Apostroflar RFC 2821/2822 –> uyğun olaraq etibarlıdır http://www.faqs.org/rfcs/rfc2822.html
HTH,
Sanjay
O, həmçinin etibarlı olan plus simvolunu idarə etmir.
Baxın: http://www.dominicsayers.com/isemail/
Daha geniş bir qeyddə, bu, özlüyündə tam müzakirəyə layiq olan kodu kəsmə və yapışdırmaqla bağlı əsas problemdir.
@robbyslaughter.com
sən dəlisən..
yaxşı işləyir..!@
WordPress-də şərhlərdə saxta e-poçt ünvanlarının qarşısını almaq üçün bir həll tapa bilsək, yaxşı olardı
Sadəcə kiçik bir düzəliş: Normal ifadənin sonunda əlavə ()+ işarəsi var. Oxumalıdır:
^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+[a-zA-Z0-9]{2,4}$
Birincisi ilə istənilən uzunluqlu TLD-lər qəbul ediləcək (bu, başqalarının qeyd etdiyi kimi mahiyyət etibarı ilə yanlış deyil, lakin niyyət belə olsaydı, ifadə qısaldıla bilərdi).
Zəhmət olmasa bu kodun müntəzəm ifadəsini və necə işlədiyini izah edə bilərsinizmi? Həmçinin .test haqqında – Yuxarıdakı kodda etdiyiniz kimi şeyləri yoxlamaq üçün .test javascript-də defolt ifadədirmi?
Bu e-poçt ifadəsi üçün qısa koddur-
funksiyası validateEmail(id)
{
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
e-poçtu qaytarınPattern.test(id);
}
Dipak Rai
varanasi
Bu e-poçt ifadəsi üçün qısa koddur-
funksiyası validateEmail(id)
{
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
e-poçtu qaytarınPattern.test(id);
}
Dipak Rai
varanasi
Çox sağol dayı. Bu mənə çox kömək etdi 🙂
Amanda
kod üçün təşəkkür edirik!
Təşəkkürlər, lakin bu regexdə xəta var. Mən regex mütəxəssisi deyiləm, lakin e-poçtu sınadım:
test@test
və o regexdən keçdi... Mən qeyd etdim ki, "." belə olmalıdır:
/^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/
ilə yuvarlanıram
/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$ /
və .info haqqında nə demək olar?
kahretsin... 3 il əvvəl? :S
Bəli, bu, sadəcə olaraq, kobud yoxlamadır, lakin 100% dəqiq deyil, məsələn, bu, yaxşı olardı john_doe.@gmail.com bu əslində etibarlı e-poçt ünvanı deyil (e-poçtun yerli hissəsində son simvol kimi nöqtəyə icazə verilmir).
Həm də qəbul edərdi john…doe@gmail.com bu da etibarsızdır, çünki ardıcıllıqda birdən çox nöqtə ola bilməz.
Bunlar ilk baxışdan fərq etdiyim bəzi qüsurlardır.
Məqsədim, kimsə bundan təhlükəsizlik yoxlaması kimi istifadə etməyi planlaşdırdığı halda bunu qeyd etmək deyil - kifayət qədər təhlükəsiz deyil.
Etibarlı e-poçt ünvanları haqqında məlumat üçün bunu yoxlayın: http://en.wikipedia.org/wiki/E-mail_address
Deepak,
Əslində, məncə, nöqtə üçün qaçış tətbiq etməlisiniz (“.”). Beləliklə, funksiyanız yerinə belə olmalıdır:
funksiyası validateEmail(id)
{
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
e-poçtu qaytarınPattern.test(id);
}
Əks halda, nöqtə "hər hansı bir simvol" mənasını verəcəkdir. İnanıram ki, belə xüsusi personajlardan qaçmaq lazımdır.
Regards,
Federico
funksiya validateEmail(fld) {
var error=””;
var tfld = trim(fld.value); // boşluq kəsilmiş sahənin dəyəri
var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
var illegalChars= /[(),;:\”[]]/ ;
əgər (fld.value == “E-poçt ünvanınızı daxil edin”) {
error = “Lütfən, e-poçt ünvanınızı daxil edin.n”;
} else if (!emailFilter.test(tfld)) { //qeyri-qanuni simvollar üçün e-poçtu sınayın
error = “Lütfən düzgün e-poçt ünvanı daxil edin.n”;
} else if (fld.value.match(illegalChars)) {
error = “Lütfən düzgün e-poçt ünvanı daxil edin.n”;
}
qaytarma xətası;
}
funksiya validateEmail(fld) {
var error=””;
var tfld = trim(fld.value); // boşluq kəsilmiş sahənin dəyəri
var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
var illegalChars= /[(),;:\”[]]/ ;
əgər (fld.value == “E-poçt ünvanınızı daxil edin”) {
error = “Lütfən, e-poçt ünvanınızı daxil edin.n”;
} else if (!emailFilter.test(tfld)) { //qeyri-qanuni simvollar üçün e-poçtu sınayın
error = “Lütfən düzgün e-poçt ünvanı daxil edin.n”;
} else if (fld.value.match(illegalChars)) {
error = “Lütfən düzgün e-poçt ünvanı daxil edin.n”;
}
qaytarma xətası;
}
funksiya validateEmail(fld) {
var error=””;
var tfld = trim(fld.value); // boşluq kəsilmiş sahənin dəyəri
var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
var illegalChars= /[(),;:\”[]]/ ;
əgər (fld.value == “E-poçt ünvanınızı daxil edin”) {
error = “Lütfən, e-poçt ünvanınızı daxil edin.n”;
} else if (!emailFilter.test(tfld)) { //qeyri-qanuni simvollar üçün e-poçtu sınayın
error = “Lütfən düzgün e-poçt ünvanı daxil edin.n”;
} else if (fld.value.match(illegalChars)) {
error = “Lütfən düzgün e-poçt ünvanı daxil edin.n”;
}
qaytarma xətası;
}
funksiya validateEmail(fld) {
var error=””;
var tfld = trim(fld.value); // boşluq kəsilmiş sahənin dəyəri
var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
var illegalChars= /[(),;:\”[]]/ ;
əgər (fld.value == “E-poçt ünvanınızı daxil edin”) {
error = “Lütfən, e-poçt ünvanınızı daxil edin.n”;
} else if (!emailFilter.test(tfld)) { //qeyri-qanuni simvollar üçün e-poçtu sınayın
error = “Lütfən düzgün e-poçt ünvanı daxil edin.n”;
} else if (fld.value.match(illegalChars)) {
error = “Lütfən düzgün e-poçt ünvanı daxil edin.n”;
}
qaytarma xətası;
}
funksiya trim(ləri)
{
qaytarın s.əvəz edin(/^s+|s+$/, ”);
}
funksiya trim(ləri)
{
qaytarın s.əvəz edin(/^s+|s+$/, ”);
}
'.focus' bir funksiyadır, o, olmalıdır:
email.focus()
'.focus' bir funksiyadır, o, olmalıdır:
email.focus()
zəhmli
Gem kimi işləyir.. Javascript-də reg ifadələrinin əla istifadəsi…
Bu daşda çatdır...
“mmm@mmm..com” ünvanı qəbul ediləcək. Ancaq iki nöqtə birlikdə keçərli deyil.
Dostlar, istifadə edin. Bu, heç bir JS təsdiqini tələb etmir.
Ancaq yalnız müasir brauzerlərlə işləyir. Təəssüf ki, dünya hələ ki, yetişməyib. —
İPhone üçün poçt qutusundan göndərildi