【问题标题】:Internet e-mail validation expression validates everythingInternet 电子邮件验证表达式验证所有内容
【发布时间】:2011-03-21 20:51:56
【问题描述】:

我正在验证 asp.net 页面中的输入,但问题是它验证了像 hasangürsoy@şşıı.com 这样的电子邮件

我的代码是:

if (Regex.IsMatch(email, @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"))
{ valid }
else { invalid }

编辑: 我之前写过question,特别是为了验证包含土耳其字符的电子邮件地址,但现在我不希望用户能够输入带有土耳其字符的邮件,因为用户大多错误地输入了土耳其字符,我无法发送邮件到这些地址。

【问题讨论】:

  • 这究竟是为什么?
  • 它应该验证该地址。这是完全合法的。
  • 但是之前没有验证。奇怪的是它现在验证了。

标签: asp.net regex


【解决方案1】:

为什么不直接使用内置的System.Net.Mail.MailAddress 类进行电子邮件验证?

bool isValidEmail = false;
try
{
    var email = new MailAddress("hasangürsoy@şşıı.com");
    isValidEmail = true;
{
catch (FormatException x)
{
    // gets "An invalid character was found in the mail header: '.'."
}

【讨论】:

    【解决方案2】:

    RFC3692 详细介绍了如何正确验证电子邮件地址,目前只能正确处理 ASCII 字符。然而,这是由于变化,因此您的验证应该尽可能放松。

    我可能会使用如下表达式:

    .+@.+
    

    这将确保您不会因为您的正则表达式让他们别无选择而将他们拒之门外。

    如果电子邮件很重要,您应该跟进验证,通常通过向提供的包含链接的地址发送电子邮件来完成。

    【讨论】:

      【解决方案3】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-13
        • 2014-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-11
        • 2011-10-27
        相关资源
        最近更新 更多