2016-08-03 47 views
4

我使用.NET我的電子郵件驗證:電子郵件驗證程序忽略空白

[Display(Name = "Email address")] 
    [Required(ErrorMessage = "The email address is required")] 
    [EmailAddress(ErrorMessage = "Invalid Email Address")] 

但是,如果我複製粘貼像[email protected]的電子郵件地址(在.COM結束它說,它注意到空白是無效的。 我怎麼能告訴它忽略驗證是空的空間?

我不能SO編輯器中鍵入空的空間,想象以後還有空的空間。com

+1

如果包含該空格,則確實存在無效的電子郵件地址。在驗證過程中不要忽略它,在驗證之前你不能擺脫它嗎? – hvd

+2

以下是EmailAddressAttribute的代碼http://referencesource.microsoft.com/#System.ComponentModel.DataAnnotations/DataAnnotations/EmailAddressAttribute.cs。你可以在此基礎上編寫自己的版本,但忽略空格。 –

+0

理想情況下,如果您想允許尾隨空格,那麼在執行任何驗證之前,您應該在客戶端修改這些空格。你可以寫一個JavaScript函數來做到這一點。但是,我不確定這個函數是否會干擾客戶端的不顯眼的jQuery驗證,如果你打開了。 –

回答

6

你可以使用正則表達式驗證屬性並使用一些允許在開始和結束時使用空格的正則表達式。

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

然而,這正則表達式只是一個樣品,我建議您訪問This site或在下面的評論中提到的SO後找到一個正則表達式是可以接受你的需求,然後:一個例子如下在任一端使用[Space]*以允許無限空間

+0

我想輸入我的電子郵件地址作爲[email protected] - 這個正則表達式不會允許它。此外,它還會拒絕https://en.wikipedia.org/wiki/List_of_Internet_top-level_domains#ICANN-era_generic_top-level_domains中的許多TLD,例如.marketing,通過限制TLD長度爲2-5個字符。另外http://stackoverflow.com/questions/3844431/are-email-addresses-allowed-to-contain-non-alphanumeric-characters也許是有趣的。 – Chris

+0

這是一個基本的電子郵件驗證正則表達式。還有許多其他可通過互聯網搜索來滿足這種情況。與問題相關的重要問題是1>使用正則表達式驗證器2>使用公認的電子郵件正則表達式字符串3>在開始和結束處用'[空格] *'修改它以允許空格。 –

+1

我的答案的問題是,通過將該正則表達式作爲問題答案的一部分,然後人們會看到它,並假設它*是一個適當的正則表達式來使用。人們來到SO,只需複製和粘貼代碼。他們不會看到這個答案,然後說「現在找到電子郵件部分的正則表達式」。如果你想明確說明你的答案中的正則表達式不應該被認爲是適用於實際驗證電子郵件地址的正則表達式,那麼這將是非常棒的,但是對於我來說,感覺就像答案是暗示它是一個完整的解決方案。 – Chris