我正在尝试使用以下代码捕获格式错误的电子邮件地址:
Try
Dim address = New MailAddress(emailAddress.Text)
Catch ex As FormatException
CustomValidator1.IsValid = False
Finally
confirmEmailAddress.Focus()
End Try
它抓住了大多数东西,但不是这样的东西:
测试@ testcom
请注意'com'之前没有完整停止。这不会抛出FormatException。除了为电子邮件地址添加RegEx测试之外,还有其他方法吗?
答案 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
输出: