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 不能捕获所有内容的主要内容,如果未能解决你的问题,请参考以下文章

Validator EmailAddress可以验证一组电子邮件

获取 r_liteprofile 和 r_emailaddress - api.linkedin.com/v2

Django REST EmailAddress 匹配查询不存在

nameid-format:emailAddress 在使用电子邮件作为 nameid 格式时使用。当使用用户名作为 namid 字段时,正确的 nameid 格式是啥

urn:oasis:names:tc:SAML:2.0:nameid-format:emailAddress 是有效的 NameID 格式吗?

EmailAddress DataAnnotation 在 View 上标记为有效但 ModelState.IsValid = false?