2012-09-20 13 views
14

jQuery doğrulama eklentisi normal ifadesinin gereksinim için yetersiz olduğunu buluyorum. Bu regex /^([a-zA-Z0-9_.-+])+\@(([a-zA kaynağını vermek isterken, geçerli bir e-posta adresi olarak herhangi bir e-posta adresi [email protected] kabul eder -Z0-9 -]) +.) + ([A-zA-Z0-9] {2,4}) + $/böylece adresin tam .com kısmını doğrulayacaktır. Ben bir aptal geçirmez regex almak için daha fazla endişe duyuyorum (e-posta doğrulama için hiçbir aptal geçirmez regex olduğu gibi)jquery validate eklentisi e-posta adresi doğrulamasını geçersiz kılma E-posta adresi doğrulaması

Sadece FYI: Aynı zamanda sunucu tarafında doğrulama yapıyorum ama bu noktada Hangi e-posta adresi normal ifadesi doğru olduğundan endişelenmiyorum.

Bunu jQuery validate eklentisinin "kurallar" bölümünde yapmanın bir yolu var mı?

Bu şu anda benim kurallarım bölümdür:

rules: { 
         email: { 
          required: { 
            depends:function(){ 
             $(this).val($.trim($(this).val())); 
             return true; 
            } 
           }, 
          email: true 
         }, 

cevap

21

Bunu ancak kendi özel doğrulama eklemeniz gerekir bir cevap uğruna olmaz:

"this is a valid adress !"@yes.it.is 

Bunu okumanızı öneririm. senin kurallarına Sonra

//custom validation rule 
$.validator.addMethod("customemail", 
    function(value, element) { 
     return /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(value); 
    }, 
    "Sorry, I've enabled very strict email validation" 
); 

ekleyin:

Gerçek hayatta
rules: { 
        email: { 
         required: { 
           depends:function(){ 
            $(this).val($.trim($(this).val())); 
            return true; 
           } 
          }, 
         customemail: true 
        }, 
+0

bir hata burada, regex: return /^([a-zA-Z0-9_.\-+])+\@ (([a-z-0-9 -]) +.) + ([a-z-0-9] {2,4}) + $/testi (değer);. –

+2

@ Tom: e-posta doğrulama ifadesi yanlış. ** 'return /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/ olmalıdır. test (value); '** –

+2

bunu neden yapmayacağınızı açıklayabilir misiniz? – wal

6

Sizin düzenli ifade jQuery haklı, sadece çok sıkı. Stop Validating Email Addresses With Your Complex Regex

+1

, herkesin e-posta adresi, bir .TLD vardır ve sadece spam kenar harf karakterleri var. – Acyra

+0

@Acyra Sadece bazen ve kaza ile çalışan kod yazmakta özgürsünüz. Ancak pek çok kodlayıcı, standardı izleyen ve yalnızca daha önce gördüğünüz tüm e-postalarla çalışan kodları yazmayı tercih eder. –

+0

Bu bilgilerimin dışında. E-posta xxx @ xxx gibi teknik olarak mümkün mü? (no .xx son eki). Varsayılan doğrulama eklentisi buna izin verir. – Mark

0
// Add Custom Email Validation 
jQuery.validator.addMethod('customemail', function (emailaddr, element) { 
     emailaddr = emailaddr.replace(/\s+/g, ''); 
     return this.optional(element) || 
     emailaddr.match(/^\b[A-Z0-9._%-][email protected]@[A-Z0-9.-]+\.[A-Z]{2,4}\b$/i); 
}); 
+0

Bu kod soruyu cevaplayabilirken, OP'nin çözümü anlamasına yardımcı olmak ve benzer bir sorunu olan diğer okuyuculara yardımcı olmak için lütfen biraz açıklama yapmayı düşünün. – CodeMouse92