EmailAddress FormatException不会捕获所有内容

时间:2015-04-08 15:27:07

标签: c# regex vb.net exception

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

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

它抓住了大多数东西,但不是这样的东西:

测试@ testcom

请注意'com'之前没有完整停止。这不会抛出FormatException。除了为电子邮件地址添加RegEx测试之外,还有其他方法吗?

2 个答案:

答案 0 :(得分:1)

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

查看RFC 5321说的内容:

  

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

可以在RFC 5322中找到更正式的定义。

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

答案 1 :(得分:1)

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

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

输出:

enter image description here