1

我正在做一个人们可以注册的注册表单,因为我将询问他们的电子邮件地址是否可以进行regex验证以捕获任何其他电子邮件

例子:

xxx@gmail.comxxx@yahoo.com,并且只允许xxx@bat.ac.uk我可以实现一个系统,向注册人发送电子邮件,要求他们进行验证。我知道如何实现我只是停留在这个验证部分的电子邮件位。希望这是有道理的

有没有办法修改默认的电子邮件验证表达式

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

4

3 回答 3

1

如果这是 ASP.NET Web 窗体,那么您可以使用 aRegularExpressionValidator来完成这项工作。

<asp:RegularExpressionValidator ID="SomeID"
    runat="server"
    ControlToValidate="TheControlIDToValidate"
    ErrorMessage="An error message you want to display."
    ValidationExpression="\w+([-+.']\w+)@\w+([-.]\w+).\w+([-.]\w+)*"
    EnableClientScript="true" />

这将使用 JavaScript 在客户端验证值。但是,如果未启用 JavaScript,则可以绕过它,因此在服务器端您需要使用Regex该类:

Regex rgx = new Regex(@"\w+([-+.']\w+)@\w+([-.]\w+).\w+([-.]\w+)*", RegexOptions.IgnoreCase);
MatchCollection matches = rgx.Matches(input);

那么如果matches.Count > 0你很好。


但是,如果它是 ASP.NET MVC,则可以使用RegularExpression数据注释。您只需为模型的属性添加一个属性:

[RegularExpression(@"\w+([-+.']\w+)@\w+([-.]\w+).\w+([-.]\w+)*", "Some error message.")]
public string EmailAddress { get; set; }
于 2013-02-21T12:08:44.363 回答
0

我建议使用默认验证器来检查邮件是否有效,并添加一个同时实现客户端和服务器端验证的 CustomValidator。

在这里您可以检查扩展并执行您需要的自定义逻辑。

于 2013-02-21T12:03:34.533 回答
0

我会使用内置属性来验证电子邮件地址,然后除此之外,检查这个正则表达式:

@bat.ac.uk$

然后您就知道这是一封有效的电子邮件,并且包含您要查找的内容。电子邮件的验证非常复杂,我不建议重写它,所以只需使用两种不同的东西进行验证。

电子邮件地址属性:http: //msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.emailaddressattribute.aspx

于 2013-02-21T12:06:36.460 回答