E-posta Adresini JavaScript ve Normal İfadelerle Kontrol Edin

Bir süre önce koydum JavaScript ve Normal İfadeler kullanan Parola Gücü Kontrolü. Aynı notta, aynı normal ifade (regex) metodolojisini kullanarak bir e-posta adresinin yapısını da kontrol edebilirsiniz.

Form öğenizde id = ”emailaddress” ve bir form eklersin onSubmit = ”dönüş checkEmail ();", Bu, e-posta adresinin geçerli bir yapıya sahip olup olmaması durumunda bir uyarı döndürmek için kullanabileceğiniz bir Javascript işlevidir:

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

İşlev, e-postanın içeriğini filtrenin içeriğini doğrular. Karşılaştırma başarısız olursa, bir uyarı çıkar ve odağı e-posta adresi alanına geri döndürür!

41 Yorumlar

  1. 1

    Birden çok e-posta adresi olan formlar için class = ”emailaddress” yapmak iyi olur. Prototype.js kitaplığınız varsa (http://www.prototypejs.org) sayfada yer alan aşağıdaki gibi bir şey yapabilirsiniz:

    var geçerli = doğru;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$ ('. emailaddress'). each (function (email) {
    eğer (! filter.test (email.value)) {
    uyarı (? Lütfen geçerli bir e-posta adresi sağlayın?);
    e-posta.odak;
    geçerli = yanlış;
    }
    });
    geçerli dönüş;

  2. 5
  3. 7

    Bu fikri beğendim, ancak hangi yasal e-posta adreslerini kabul etmediğini ve hangi yasadışı adreslere izin verdiğini açıklamadan bu belirli normal ifadeyi benimsemekten çekinirim.

    Hangi durumları kapsamadığına dair açıklamanın yanı sıra iyi bir iş yapan normal bir ifade örneği için şuna bakın:

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

    Kişisel tercihim, basit durumların çoğunu ele almak ve reddetmek yerine diğer her şey için bir uyarı yapmaktır. Bob gerçekten teslim olmak istiyorsa bob@com.museum ziyade bob@museum.comneden izin vermiyorsun?

    • 8

      Merhaba Reg,

      Regex'i kullanarak test edebilirsiniz. Çevrimiçi Regex Test Cihazı.

      Ayrıca, emin olmak istiyorsanız kesinlikle yapılabilecek çok daha fazlası var. e RFC'ye göre geçerlidir.

      Birisinin geçersiz bir e-posta adresi girmesine izin vermemek için birkaç neden vardır:
      1. Bekledikleri e-posta ulaşmadığında - adresin yanlış girilmesi sizin hatanız olsun ya da olmasın - size kızacaklardır.
      2. com.museum geçerli bir etki alanıysa ve diyelim ki, Yahoo! onu işletti - geri dönen herhangi bir e-posta adresi, şirketinizin e-posta teslimatı konusundaki itibarını olumsuz etkileyecektir. Bu, şirketinizin tüm e-postalarının engellenmesine neden olabilir.
      3. E-posta servis sağlayıcınız giriş yapmanıza izin verdiyse bob@com.museumayrıca, geri dönenlerden dolayı o adresin aboneliğini iptal edene kadar bu e-posta adresine gönderilen her e-posta için ödeme yaparsınız. Böyle geçersiz bir e-posta adresine izin veren herhangi bir ESP'den uzak dururdum - sadece paranızı alıyorlar!

      Uğradığınız için teşekkürler!
      Doug

  4. 9
  5. 10

    İfadeyi yazmanın çok daha basit bir yolu var:
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    - Son değiştirici / i ile büyük harf aralığını belirtmeye gerek yoktur.
    - bilmiyorum TLD İçinde sayılar var.
    Bir yan not olarak, 6 karaktere kadar TLD'ye izin veriyorum; yenileri düzenli olarak gelir ve asla bilemezsiniz (peki, bazılarının içinde numaralar bile olabilir, biliyorum).

  6. 11

    Merhaba,

    Bunu gerçek zamanlı olarak mevcut bir biçimde kullanmaya çalışıyorum, ancak bu, parola gücü denetleyiciniz gibi gerçek zamanlı olarak doğrulamıyor gibi görünüyor ...

    Ya da, o kadar bilgisiz miyim ve bu benim için çalışmıyor mu?

  7. 12

    btw, burada neler olup bittiğini gerçekten çok beğendim, öğreticileriniz çok basit, bunu kesinlikle işaretleyeceğim….

  8. 13
  9. 16
  10. 17

    Küçük bir düzeltme: Normal ifadenin sonunda fazladan () + bulunur. Şöyle yazmalıdır:

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

    İlki ile herhangi bir uzunluktaki TLD'ler kabul edilirdi (ki bu, diğerlerinin de belirttiği gibi özünde yanlış değildir, ancak niyet buysa, ifade kısaltılabilir).

  11. 18

    Lütfen bu kodun normal ifadesini ve nasıl çalıştığını açıklar mısınız? Ayrıca .test hakkında - .test, yukarıdaki kodda yaptığınız gibi şeyleri kontrol etmek için javascript'te varsayılan bir ifade midir?

  12. 19

    Bu, e-posta ifadesi için kısa bir koddur.

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

    }
    Deepak Rai
    varanasi

  13. 20

    Bu, e-posta ifadesi için kısa bir koddur.

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

    }
    Deepak Rai
    varanasi

  14. 21
  15. 22
  16. 23

    Teşekkürler, ancak bu normal ifadede bir hata var. Normal ifade uzmanı değilim, ancak e-postayı denedim:

    test @ test

    ve normal ifadeyi geçti… "" karakterinden kaçamadığını fark ettim. bu yüzden olmalı:

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

  17. 24
  18. 27

    Bu sadece kaba bir kontrol ancak% 100 doğru değil, örneğin john_doe. @ gmail.com bu aslında geçerli bir e-posta adresi değildir (e-postanın yerel kısmında son karakter olarak noktaya izin verilmez).
    Ayrıca kabul ederdi john…doe@gmail.com bu da geçersizdir çünkü bir dizide birden fazla nokta olamaz.

    Bunlar ilk bakışta fark ettiğim bazı kusurlar.
    Niyetim, birisinin bunu bir güvenlik kontrolü olarak kullanmayı planlaması durumunda - yeterince güvenli değil diye, sadece buna işaret etmek değil.

    Geçerli e-posta adresleri hakkında bilgi için şuna bakın: http://en.wikipedia.org/wiki/E-mail_address

  19. 28

    Derin,

    Aslında, nokta (".") İçin bir kaçış uygulamanız gerektiğini düşünüyorum. Dolayısıyla, işleviniz şöyle olmalıdır:

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

    }

    Aksi takdirde, nokta "herhangi bir karakter" anlamına gelir. Bu tür özel karakterlerin kaçması gerektiğine inanıyorum.

    Saygılarımızla,

    Federico

  20. 29

    function validateEmail (fld) {
    var error = ””;
    var tfld = trim (fld.value); // boşlukların kırpıldığı alanın değeri
    var e-mailFilter = /🖤[🖤@]+@[🖤@.]+.[🖤@]*ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    if (fld.value == “E-posta Adresinizi Girin”) {

    error = "Lütfen E-posta adresinizi girin.n";
    } else if (! emailFilter.test (tfld)) {// e-postayı geçersiz karakterler için test edin

    error = "Lütfen geçerli bir e-posta adresi girin.n";
    } else if (fld.value.match (illegalChars)) {

    error = "Lütfen geçerli bir e-posta adresi girin.n";
    }
    dönüş hatası;
    }

  21. 30

    function validateEmail (fld) {
    var error = ””;
    var tfld = trim (fld.value); // boşlukların kırpıldığı alanın değeri
    var e-mailFilter = /🖤[🖤@]+@[🖤@.]+.[🖤@]*ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    if (fld.value == “E-posta Adresinizi Girin”) {

    error = "Lütfen E-posta adresinizi girin.n";
    } else if (! emailFilter.test (tfld)) {// e-postayı geçersiz karakterler için test edin

    error = "Lütfen geçerli bir e-posta adresi girin.n";
    } else if (fld.value.match (illegalChars)) {

    error = "Lütfen geçerli bir e-posta adresi girin.n";
    }
    dönüş hatası;
    }

  22. 31

    function validateEmail (fld) {
    var error = ””;
    var tfld = trim (fld.value); // boşlukların kırpıldığı alanın değeri
    var e-mailFilter = /🖤[🖤@]+@[🖤@.]+.[🖤@]*ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    if (fld.value == “E-posta Adresinizi Girin”) {

    error = "Lütfen E-posta adresinizi girin.n";
    } else if (! emailFilter.test (tfld)) {// e-postayı geçersiz karakterler için test edin

    error = "Lütfen geçerli bir e-posta adresi girin.n";
    } else if (fld.value.match (illegalChars)) {

    error = "Lütfen geçerli bir e-posta adresi girin.n";
    }
    dönüş hatası;
    }

  23. 32

    function validateEmail (fld) {
    var error = ””;
    var tfld = trim (fld.value); // boşlukların kırpıldığı alanın değeri
    var e-mailFilter = /🖤[🖤@]+@[🖤@.]+.[🖤@]*ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    if (fld.value == “E-posta Adresinizi Girin”) {

    error = "Lütfen E-posta adresinizi girin.n";
    } else if (! emailFilter.test (tfld)) {// e-postayı geçersiz karakterler için test edin

    error = "Lütfen geçerli bir e-posta adresi girin.n";
    } else if (fld.value.match (illegalChars)) {

    error = "Lütfen geçerli bir e-posta adresi girin.n";
    }
    dönüş hatası;
    }

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

Ne düşünüyorsunuz?

Bu site spam'i azaltmak için Akismet'i kullanıyor. Yorum verilerinizin nasıl işlendiğini öğrenin.