以下表达式适用于使用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>
答案 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?)+
请注意,电子邮件验证不能被认为是可靠的,因为它很容易绕过大多数正则表达式。