2016-04-14 54 views
1

目前,電子郵件需要進行驗證,如果用戶輸入電子郵件,我如何使此選項可用並仍然使用正則表達式?如何使一個屬性可選,但仍然使用正則表達式?

[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

您只需要移除'RequiredAttribute'。如果該屬性的值在客戶端或服務器上爲空(或空字符串),則不計算「RegularExpressionAttribute」。 –

回答

1

只需添加一個非捕獲組,並使用?這樣的:^(?:\w+([-+.]*[\w -]+)*@(\w+([-.]?\w+)){1,}\.\w{2,4})?$

這一個空白領域或正則表達式匹配的電子郵件相匹配。

+0

看起來像你可以刪除?:它仍然工作? –

+0

@coolbreeze是的,只要你不需要'$ 1'的值,這將涉及不包含'?:'的不同組。 – Laurel

+0

我沒有使用任何值,只是尋找真假。 –

相關問題