簡體   English   中英

正則表達式電子郵件 - 忽略前導和尾隨空格?

[英]Regex Email - Ignore leading and trailing spaces?

我們使用以下內容在ASP.NET中進行電子郵件驗證:

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

如何修改它以忽略前導和尾隨空格?

我們在回發代碼中處理的實際修剪但是如果用戶通常由於復制和粘貼而具有額外空間,則驗證器將被觸發為無效。

您可以在模式之前和之后放置\\s* ,它應該正常工作。

將您想要的內容分組到命名捕獲中,然后在捕獲之前和之后允許空格

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

只需在將其傳遞給驗證器之前進行修剪。

在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"  />

允許各種電子郵件,例如:

"some@one.com"
"  some@one.com  "
"so_me@one.co.uk"
" a.s-d__+f@asd.as.as "

等等

確保在代碼中刪除空格,如下所示:

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

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

我打算“回答”這個簡單的評論,但你問題的真正答案是沒有答案

為什么?

因為任何在其之前或之后有空格或空格的電子郵件地址都是無效的電子郵件地址。

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

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

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

甚至這個

/.+@.+/

其他任何東西都是無效的電子郵件地址。

真正的方法是將TRIM()字符串傳遞給電子郵件控件以使用它。

只是警告你

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM