通过电子邮件发送正则表达式验证器以允许在开始和结束时使用空格

时间:2011-12-30 18:03:16

标签: asp.net regex

以下表达式适用于使用asp.net进行电子邮件验证,但在开始和结束时不允许使用空格。

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

有办法允许空白吗?

这是完整的asp.net标记,我无法在验证之前修剪。

 <asp:TextBox ID="txtEmail" runat="server" MaxLength="100" CssClass="textbg text"></asp:TextBox>

 <asp:RegularExpressionValidator ID="EmailValidator" runat="server" ErrorMessage="Email is not vaild."
            ForeColor="Red" ControlToValidate="txtEmail" ValidationExpression="^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+([;.](([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+)*$"
            ValidationGroup="register">Email is not vaild.</asp:RegularExpressionValidator>

2 个答案:

答案 0 :(得分:4)

我会回应之前的观点,建议在验证之前修剪输入。修剪或忽略空格是一个非常常见的要求,所以如果您的验证器无法处理它,我会非常惊讶。

我还要指出一个电子邮件地址,两端的空格都是无效的电子邮件地址,因此将其视为有效在技术上是不正确的。

但是,如果它不能修剪它,并且你必须通过它,那么修改任何正则表达式以允许任何一端的空格非常容易。

空格用\s表示在正则表达式中。零个或多个空格为\s*

因此,您需要做的就是添加\s* to the start and end of the expression, immediately inside the ^ and $`开始和结束标记,如下所示:

/^\s*(.......)\s*$/

(其中......表示验证电子邮件地址的表达式(但可能不是您在问题中引用的表达式)。

希望有所帮助。

答案 1 :(得分:1)

使用正则表达式进行电子邮件验证并不容易。由于您使用的是ASP.NET,因此您可以使用相同的正则表达式MailAddress。据推测,大多数电子邮件地址都不会无效,因此Try...Catch操作不应太昂贵。

MailAddress mailAddress;

try 
{
    mailAddress = new MailAddress(txtEmail.Text);
} 
catch (Exception ex) 
{
    //Email considered invalid
}

编辑2 - 这个应该与验证器一起使用:

(\s?)+\w+(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+([;.](([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+)*(\s?)+ 

请注意,电子邮件验证不能被认为是可靠的,因为它很容易绕过大多数正则表达式。