正则表达式电子邮件 - 忽略前导和尾随空格?

时间:2009-02-21 18:23:01

标签: .net regex email

我们正在使用以下内容在ASP.NET中进行电子邮件验证:

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

如何修改它以忽略前导和尾随空格?

我们在回发代码中处理的实际修剪但是如果用户通常由于复制和粘贴而有额外的空间,则验证器将被触发为无效。

5 个答案:

答案 0 :(得分:14)

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

答案 1 :(得分:7)

将您想要的内容分组到命名捕获中,然后在捕获之前和之后允许空格

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

答案 2 :(得分:4)

在将调整传递给验证器之前,先进行修剪。

答案 3 :(得分: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"  />

允许各种电子邮件,例如:

"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();

答案 4 :(得分:0)

我打算“回答”这个简单的评论,但你问题的真正答案是没有答案

为什么?

因为在其之前或之后有空格或空格的任何电子邮件地址都是无效电子邮件地址。

您尝试将带有空格字符的电子邮件地址传递给SMPTP控件,例如,尝试发送,它将失败

所有电子邮件地址都必须从此正则表达式的角度进行验证...

  

\ W +([ - +'] \ W +)的 @ \ W +([ - ] \ W +) \ W +([ - ] \ W +)。*

甚至是

  

/.+@.+/

其他 是无效的电子邮件地址。

实际上,绕过它的方法是将TRIM()字符串传递给电子邮件控件以使用它。

警告你。