EmailAddress FormatException 不能捕获所有内容

Posted

技术标签:

【中文标题】EmailAddress FormatException 不能捕获所有内容【英文标题】:EmailAddress FormatException doesn't catch everything 【发布时间】:2015-06-13 15:54:50 【问题描述】:

我正在尝试使用以下代码捕获格式错误的电子邮件地址:

        Try
            Dim address = New MailAddress(emailAddress.Text)
        Catch ex As FormatException
            CustomValidator1.IsValid = False
        Finally
            confirmEmailAddress.Focus()
        End Try

它可以捕捉到大多数东西,但不是这样的:

test@testcom

请注意“com”之前缺少句号。这不会引发 FormatException。除了为电子邮件地址添加 RegEx 测试之外,还有其他方法吗?

【问题讨论】:

【参考方案1】:

它不会抛出异常,因为它是一个有效的电子邮件地址。

看看RFC 5321 怎么说:

一个域名(或通常只是一个“域”)由一个或多个 组件,如果出现多个组件,则以点分隔。

更正式的定义见RFC 5322。

如果您想在其上添加更多验证,则必须使用 RegEx 或其他字符串检查方法。

【讨论】:

【参考方案2】:

您不必使用正则表达式来检查MailAddress.Host 中的点。看看:

Dim address = New MailAddress("someone@somewhere")
If (address.Host.Contains(".") = False) Then
    CustomValidator1.IsValid = False
End If

输出:

【讨论】:

以上是关于EmailAddress FormatException 不能捕获所有内容的主要内容,如果未能解决你的问题,请参考以下文章