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?