2009-02-21 35 views
9

我們使用以下做一個電子郵件驗證在ASP.NET:正則表達式電子郵件 - 忽略前導和尾隨空格?

\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 

怎麼可以這樣修改,忽略首尾空格?

我們在代碼中處理回發,但驗證被觸發爲無效,如果用戶有一個額外的空間,往往是由於複製和粘貼的實際裁剪。

+0

您應該閱讀以下內容:http://mail.python.org/pipermail/python-list/2006-September/404146.html – Gumbo 2009-02-21 18:36:54

+0

發送測試消息不是一個選項。它需要在提交之前儘可能在表格上進行驗證。 – schooner 2009-02-21 18:39:45

回答

4

只是做裝飾,你將它傳遞給驗證了。

+0

這是一個鏈接到文本框的asp.net驗證器,所以不確定這是默認情況下可能的。如果可能的話,我寧願讓正則表達式處理它。 – schooner 2009-02-21 18:31:01

+1

爲什麼?空格不是有效電子郵件的一部分,所以正則表達式不應該看到它們。使用onchange/onsubmit操作修剪該值。 – 2009-02-23 08:50:08

7

集團想要到一個名爲捕獲,然後什麼空間前和捕獲後

\s*(?<email>\w+([-+.']\w+)@\w+([-.]\w+).\w+([-.]\w+)*)\s* 
13

你可以把你的\s*模式之前和之後,它應該正常工作允許。

1

在ASP.NET的情況下,下面的工作:

<asp:TextBox runat="server" ID="EmailAddress" /> 
<asp:RegularExpressionValidator ValidationExpression="\s*\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*\s*" runat="server" ControlToValidate="EmailAddress" Text="*" ErrorMessage="Email is not valid" /> 

允許各種像電子郵件:

"[email protected]" 
" [email protected] " 
"[email protected]" 
" [email protected] " 

確保你帶了空格在你的代碼像這樣:

VB Dim Email as string = EmailAddress.Text.Trim()

C#string Email = EmailAddress.Text.Trim();

0

我要「答案」這是一個簡單的評論,但真正回答你的問題是,沒有答案

爲什麼?

因爲任何在其之前或之後的空格或空格的電子郵件地址是無效的電子郵件地址。

您嘗試將帶有空白字符的電子郵件地址傳遞給SMPTP控件,並嘗試發送它,它將失敗

所有電子郵件地址都必須從這一正則表達式的角度驗證...

\ w +([ - +'。] \ w +)@ \ w +([ - ] \瓦特+) \ W +([ - ] \ W +)*

或者甚至這個

/[email protected]+/

別的無效的電子郵件地址。

真的,它的方法是在傳遞給電子郵件控件之前使用TRIM()字符串來使用它。

只是警告你。