我正在做一个人们可以注册的注册表单,因为我将询问他们的电子邮件地址是否可以进行regex
验证以捕获任何其他电子邮件
例子:
xxx@gmail.com或xxx@yahoo.com,并且只允许xxx@bat.ac.uk我可以实现一个系统,向注册人发送电子邮件,要求他们进行验证。我知道如何实现我只是停留在这个验证部分的电子邮件位。希望这是有道理的
有没有办法修改默认的电子邮件验证表达式
\w+([-+.']\w+)@\w+([-.]\w+).\w+([-.]\w+)*
我正在做一个人们可以注册的注册表单,因为我将询问他们的电子邮件地址是否可以进行regex
验证以捕获任何其他电子邮件
例子:
xxx@gmail.com或xxx@yahoo.com,并且只允许xxx@bat.ac.uk我可以实现一个系统,向注册人发送电子邮件,要求他们进行验证。我知道如何实现我只是停留在这个验证部分的电子邮件位。希望这是有道理的
有没有办法修改默认的电子邮件验证表达式
\w+([-+.']\w+)@\w+([-.]\w+).\w+([-.]\w+)*
如果这是 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; }
我建议使用默认验证器来检查邮件是否有效,并添加一个同时实现客户端和服务器端验证的 CustomValidator。
在这里您可以检查扩展并执行您需要的自定义逻辑。
我会使用内置属性来验证电子邮件地址,然后除此之外,检查这个正则表达式:
@bat.ac.uk$
然后您就知道这是一封有效的电子邮件,并且包含您要查找的内容。电子邮件的验证非常复杂,我不建议重写它,所以只需使用两种不同的东西进行验证。
电子邮件地址属性:http: //msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.emailaddressattribute.aspx