ASP.NET C上的自定义电子邮件验证#

时间:2013-02-21 11:58:57

标签: c# asp.net regex validation

我正在做一个人们可以注册的注册表,因为我将要求他们的电子邮件地址如果我可以进行regex验证以捕获任何其他电子邮件

示例:

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

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

  

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

3 个答案:

答案 0 :(得分:1)

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

<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; }

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

@bat.ac.uk$

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

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