【问题标题】:Email validation error in Windows phoneWindows phone 中的电子邮件验证错误
【发布时间】:2012-09-12 17:05:13
【问题描述】:

在我的应用程序中,我正在使用电子邮件验证。我正在使用this 进行电子邮件验证。它仅检查输入的文本是否为正常的电子邮件格式。当我输入example@example.comfg 之类的电子邮件时,它会返回 true。如何检查电子邮件中的此类错误。

【问题讨论】:

  • 正如你所说,它只验证格式;否则,您需要检查每个有效顶级域的列表。如果您想检查它存在,请执行stackoverflow.com/questions/1778390/…之类的操作
  • 也许得到“.”的索引然后推断它后面的部分是否'= com'?
  • 对不起,我不太明白上面例子中的错误。如果是关于 TLD 不被公开,我认为您必须检查维护的 TLD 列表。另外,“我如何检查此类错误”是什么意思。基于正则表达式的验证器不合适吗?
  • 我认为 OP 想要拒绝 .comfg 扩展名作为无效的 TLD...在这种情况下,您可以使用查找表或强制地址的最后一块是在许多情况下,只有 2 或 3 个字符就足够了。

标签: c# silverlight windows-phone email-validation


【解决方案1】:

如果问题是您认为 comfg 是错误的,并且应该像 com 中那样最多 3 个字符,那么只需像这样更改正则表达式:

Regex.IsMatch(strIn, 
              @"^(?("")(""[^""]+?""@)|(([0-9a-zA-Z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-zA-Z])@))" + 
              @"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,3}))$");

【讨论】:

  • 但是 abc@company.info 是一个有效的电子邮件。在这种情况下,“abc@company.info”也被视为无效电子邮件。
  • 正确。这就是为什么我想知道为什么你认为 comfg 是错误的。如果您认为这是长度问题,那么您可以使用上述正则表达式中的最后一位数字进行调整。但是,如果最后一部分的含义不仅仅是长度,那么您需要根据已知列表进行过滤。因此,您应该问自己的问题是您是否允许 .aaaa 或 .mnxy 以及 .info。我的建议是使用您问题中链接提供的正则表达式。在您尝试访问它之前,您可以验证电子邮件地址的结构,但不能验证它的存在。
猜你喜欢
  • 2014-12-19
  • 1970-01-01
  • 2019-07-02
  • 2021-11-27
  • 2015-11-22
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多