ASP.NET电子邮件validation器正则expression式

有谁知道ASP.NET的电子邮件validation程序使用的正则expression式是什么?

这是在.NET中使用RegularExpressionValidatorInternet电子邮件地址的正则expression式

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

顺便说一句,如果你把一个RegularExpressionValidator在页面上,并转到devise视图有一个ValidationExpression字段,您可以使用从.NET提供的expression式列表中select。 一旦你select了你想要的expression式,就有一个validationexpression式:包含用于validation器的正则expression式的文本框

我不再validation电子邮件地址格式(好的,我检查一下是否有符号和一段时间)。 原因是什么说格式正确的地址是甚至他们的电子邮件? 您应该向他们发送一封电子邮件,并要求他们点击链接或validation代码。 这是validation电子邮件地址的唯一真实方法是有效的,而且一个人实际上能够接收电子邮件。

电子邮件地址是非常难以正确validation与正则expression式。 这是一个非常可怕的正则expression式,据说实现RFC822,第6章 ,有效的电子邮件地址的规范。

不是一个真正的答案,但也许与你想要完成的事情有关。

我们可以使用RegularExpressionValidator来validation电子邮件地址格式。 您需要在RegularExpressionValidator的ValidationExpression属性中指定正则expression式。 所以它看起来像

  <asp:RegularExpressionValidator ID="validateEmail" runat="server" ErrorMessage="Invalid email." ControlToValidate="txtEmail" ValidationExpression="^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$" /> 

同样在button或链接的事件处理程序中,您需要检查!Page.IsValid。 检查示例代码在这里: 示例代码

另外,如果您不想使用RegularExpressionValidator,则可以编写简单的validation方法,并在该方法中使用System.Text.RegularExpressions命名空间的RegEx类。

检查示例:

对于正则expression式,我首先看看这个网站: RegExLib.com

除了使用Validator进行客户端validation之外,我还build议进行服务器端validation。

 bool isValidEmail(string input) { try { var email = new System.Net.Mail.MailAddress(input); return true; } catch { return false; } } 

这是validation电子邮件地址的最佳expression式:

 ^(?("")("".+?""@)|(([0-9a-zA-Z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-zA-Z])@))(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,6}))$ 

我们可以在RegularExpressionValidator上使用这个expression式来validation电子邮件地址格式:

 <asp:RegularExpressionValidator ID="validateEmail" runat="server" ErrorMessage="Invalid email." ControlToValidate="txtEmail" ValidationExpression="^(?("")("".+?""@)|(([0-9a-zA-Z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-zA-Z])@))(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,6}))$" />