2016-04-14 19 views
1

Şu anda bir e-posta için doğrulama gerekli, isteğe bağlı olarak bunu nasıl yapabilirim ve kullanıcı e-posta girdiğinde normal ifadeyi kullanabilir miyim?İsteğe bağlı bir özellik nasıl yapılır, ancak hala bir düzenli ifade kullanılır?

[Required(ErrorMessageResourceType = typeof(Errors), ErrorMessageResourceName = "Email_Val")] 
[RegularExpression(@"^\w+([-+.]*[\w -]+)*@(\w+([-.]?\w+)){1,}\.\w{2,4}", ErrorMessageResourceType = typeof(Errors), ErrorMessageResourceName = "RegExp_Val")] 
public string Email { get; set; } 
+0

Yapmanız gereken tek şey, 'RequiredAttribute' kaldırmaktır. Bir "RegularExpressionAttribute" özelliği, özelliğin değeri istemcide veya sunucuda "boş" (veya boş dize) ise değerlendirilmez. –

cevap

1

Sadece olmayan bir yakalama grubunu ekleyin ve bunun gibi ? kullanın: ^(?:\w+([-+.]*[\w -]+)*@(\w+([-.]?\w+)){1,}\.\w{2,4})?$

bir boş alan veya normal ifadeyle eşleşir bir email eşleşir.

+0

:? 'I kaldırabileceğiniz gibi görünüyor ve hala çalışıyor mu? –

+0

@coolbreeze evet, "$ 1" değerine ihtiyacınız olmadığı sürece, "?:" Olmadan farklı gruplara başvurabilirsiniz. – Laurel

+0

Hiçbir değer kullanmıyorum, sadece doğru veya yanlış arıyorum. –