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

Posted

技术标签:

【中文标题】电子邮件地址验证。这有效吗?【英文标题】:Email Address Validation. Is this Valid? 【发布时间】:2013-11-20 16:19:27 【问题描述】:

我正在使用 asp.net 验证控件来验证电子邮件地址。电子邮件地址存在问题,因为它包含以下字符。 “-。”例如,电子邮件地址 w.-a.wsdf.com 由于其中的“.-”而无法验证。我正在四处寻找禁止这样做但找不到任何电子邮件标准。我应该将 asp.net 正则表达式更改为自定义正则表达式以允许这样做还是这不是有效的电子邮件地址?

我现在使用的正则表达式是:\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

【问题讨论】:

只是好奇你没有测试它吗? 另请参阅此问题(来自“相关”部分):***.com/q/201323/121309 【参考方案1】:

你会得到很多答案。这个一直很好用:

/\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i

最初是在 Michael Hartl 的 Rails 书中找到的

【讨论】:

不支持带引号的字符串,如 "the quick brown fox"@example.com - 请参阅 cobisi.com/email-validation/.net-component/features/…【参考方案2】:
^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$

【讨论】:

请添加对表达式作用的描述,并引用其来源(如果有)。【参考方案3】:

正则表达式很棒,但正如我的 cmets 在其他答案中显示的那样,用它们验证电子邮件地址根本不是一件容易的事。

根据我的经验,我建议:

坚持使用最简单的电子邮件验证正则表达式^.+@.+$,并发送一封带有激活链接的确认电子邮件;

完全避免使用正则表达式并使用像我的 EmailVerify for .NET 这样的库,它公开了一个自定义的、微调的有限状态机,用于根据(所有)相关 IETF 标准验证电子邮件地址加上一次性、DNS、SMTP、邮箱测试。

显然,您可以混合使用这两种选择,也许可以避免使用正则表达式,但无论如何都要发送确认链接。

免责声明:我是用于 .NET 的 EmailVerify 的技术负责人,它是validating email addresses 的 Microsoft .NET 组件。

【讨论】:

【参考方案4】:

下面的正则表达式禁止 w.-a.wsdf.com

using System.Text.RegularExpressions;

public static bool IsValidEmail(string email)

    return Regex.IsMatch(email, @"\A[a-z0-9]+([-._][a-z0-9]+)*@([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]2,4\z")
        && Regex.IsMatch(email, @"^(?=.1,64@.4,64$)(?=.6,100$).*");

见validate email address using regular expression in C#。

【讨论】:

【参考方案5】:

像这样在 html 中输入文本和按钮输入 现在,当单击按钮时,将调用 javascript 函数 SubmitFunction()。现在在这个函数中编写下面的代码。

功能检查电子邮件() var email = document.getElementById('txtEmail'); var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0- 9]2,4)+$/; if (!filter.test(email.value)) alert('请提供有效的电子邮件地址'); 电子邮件.focus; 返回假;

*它的作品*

【讨论】:

以上是关于电子邮件地址验证。这有效吗?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 MailAddress 认为 'john@gmail.'是有效的电子邮件地址吗?

检查电子邮件是不是有效且存在

如何在 Laravel 中验证电子邮件地址是不是是有效的 PayPal 电子邮件地址

电子邮件验证 MX 查找

PHP 电子邮件有效。在PHP中验证电子邮件地址

电子邮件是否有效。用PHP验证电子邮件地址