ASP.NET 电子邮件验证器正则表达式

Posted

技术标签:

【中文标题】ASP.NET 电子邮件验证器正则表达式【英文标题】:ASP.NET email validator regex 【发布时间】:2010-12-15 04:39:43 【问题描述】:

有谁知道 ASP.NET 中的电子邮件验证器使用的正则表达式是什么?

【问题讨论】:

我认为没有可以使用的内置“EmailValidator”控件。您可以使用 RegularExpressionValidator 自行滚动。 不是问题的答案 - 但这是我使用的简单验证。 .+@.+\..+。我坚持使用这个,因为许多电子邮件不符合标准,但它们仍然有效。 【参考方案1】:

这是 Internet 电子邮件地址 在 .NET 中使用 RegularExpressionValidator 的正则表达式

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

顺便说一句,如果您在页面上放置一个 RegularExpressionValidator 并转到设计视图,则会有一个 ValidationExpression 字段,您可以使用该字段从表达式列表中进行选择由.NET 提供。选择所需的表达式后,会有一个 Validation expression: 文本框,其中包含用于验证器的正则表达式

【讨论】:

在 ASP.NET 的电子邮件验证器中是这样完成的吗?那会匹配_@_._...我期待更花哨的东西。 此外,验证电子邮件地址只是浪费时间,IMO。 验证表单上的电子邮件地址绝不是浪费时间。您仍然可以将其与其他检查结合使用。 @BartKiers 这正是它应该做的。验证电子邮件的正确方法是查找 @ 和后面的点,它们之间有一些东西。关于这个主题的一篇好文章 - jacobsantos.com/2007/general/… 我认为常见的误解是客户端电子邮件验证旨在防止恶意用户输入垃圾邮件 - 它不是。目的只是帮助用户输入电子邮件。我不知道有多少次我输入电子邮件的速度如此之快,以至于忘记了域和 TLD 之间的点。【参考方案2】:

我不再验证电子邮件地址格式(好的,我检查以确保有一个 at 符号和之后的一个句点)。原因是什么说格式正确的地址甚至是他们的电子邮件?您应该向他们发送电子邮件并要求他们单击链接或验证代码。这是验证电子邮件地址是否有效以及一个人实际上能够接收电子邮件的唯一真正方法。

【讨论】:

电子邮件地址验证并不是为了防止用户输入不属于他们的地址。其目的是防止用户误输入地址。所以基本上你说的是你不能完全阻止人们闯入你的房子,所以与其锁上门,把它关上就足够了。 您可以通过@. 提供一个简单验证示例(或参考***.com/questions/742451/…) 两者都需要。在您至少知道这是一封有效的电子邮件之前,您不应该花时间发送电子邮件。【参考方案3】:

仅使用正则表达式很难正确验证电子邮件地址。 Here 是一个漂亮可怕的正则表达式,据说它实现了RFC822, chapter 6,有效电子邮件地址的规范。

不是真正的答案,但可能与您要完成的工作有关。

【讨论】:

那个正则表达式真是太棒了【参考方案4】:

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

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

在按钮或链接的事件处理程序中,您还需要检查 !Page.IsValid。 在此处查看示例代码:sample code

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

检查示例:

example

【讨论】:

-1 提供了一种将有效电子邮件错误地识别为不良电子邮件的解决方案。将您的正则表达式与此进行比较:ex-parrot.com/pdw/Mail-RFC822-Address.html 您应该添加一个警告,指出此解决方案过于简单。【参考方案5】:

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

【讨论】:

【参考方案6】:

除了使用 Validator 进行客户端验证外,我还建议您也进行服务器端验证。

bool isValidEmail(string input)

    try
    
        var email = new System.Net.Mail.MailAddress(input);
        return true;
    
    catch
    
        return false;
    

【讨论】:

以上是关于ASP.NET 电子邮件验证器正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

电子邮件地址验证。这有效吗?

默认 ASP.NET Core 身份密码的正则表达式

asp.net 使用正则表达式验证包含打开/关闭括号片段的属性字符串

有效的 RegEx 不适用于 ASP.Net MVC 正则表达式属性

Asp .NET MVC 正则表达式

jQuery validate:如何为正则表达式验证添加规则?