繁体   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