Excel 2013 中的严格电子邮件验证

Excel 2013 中的严格电子邮件验证

我正在使用 Excel 2013。我正在构建最终用户将填写的表单。

我有一个单元格供用户输入他们的电子邮件地址,我想建立一个全面的电子邮件验证。我在网上搜索了很多,我只找到了建议搜索和的存在,@.如果例如最终用户输入以下内容:@@.com,不会标记任何错误。

正确的验证是什么?

注意:我尝试使用在线找到的 UDF 和 VBscript,但对我来说都不起作用。

答案1

适应Bill Manville 的技术,这应该对你有用。进入数据验证并选择风俗。输入此公式(假设您的电子邮件地址在单元格 A2 中):

=AND(ISERROR(FIND(" ",A2)),LEN(A2)-LEN(SUBSTITUTE(A2,"@",""))=1,IFERROR(SEARCH("@",A2)<SEARCH(".",A2,SEARCH("@",A2)),0),NOT(IFERROR(SEARCH("@",A2),0)=1),NOT(IFERROR(SEARCH(".",A2,SEARCH("@",A2))-SEARCH("@",A2),0)=1),LEFT(A2,1)<>".",RIGHT(A2,1)<>".")

以下是相同的公式,但为了便于阅读,将其分开:

=AND(
    ISERROR(FIND(" ",A2))
   ,LEN(A2)-LEN(SUBSTITUTE(A2,"@",""))=1
   ,IFERROR(SEARCH("@",A2)<SEARCH(".",A2,SEARCH("@",A2)),0)
   ,NOT(IFERROR(SEARCH("@",A2),0)=1)
   ,NOT(IFERROR(SEARCH(".",A2,SEARCH("@",A2))-SEARCH("@",A2),0)=1)
   ,LEFT(A2,1)<>"."
   ,RIGHT(A2,1)<>"."
   )

这将检查:

  1. 没有空格
  2. 只有一个@符号
  3. @符号前有一些字符
  4. 符号.后至少有一个符号@
  5. @和以下.符号之间至少有一个字符
  6. 地址不是以.

答案2

电子邮件地址格式定义明确RFC 2822

基本上,您可以按如下方式简化它。

您有两个部分:用户@域。

域名采用点分十进制格式。例如 mydomain.tld、foo.bar.baz.net 等。

用户更复杂,它可以是带引号的字符串,也可以是点格式,其中点之间有内容,还有一个选项 + 标记。

示例1:
“@@pen00tje”@
superuser.com 用户为@@penootje。域为superuser.com。用户名和域之间有一个@。

例2:
[电子邮件保护]

例3:
[电子邮件保护]
这将通过邮件发送,[email protected]但“收件人:”字段将包含[email protected]。这允许您的邮件客户端过滤消息。

无效的例子:
[电子邮件保护] (用户名中不允许有两个点)

大多数网络表单似乎都弄错了这一点。即使是像戴尔和 Visa 这样的大型组织,在遇到合法但意外的电子邮件地址时也会失败。请务必阅读 RFC。一开始读懂写的内容并不容易,但它已经采用了一种非常适合转换为代码(或 Excel 规则)的格式。它是允许的内容的唯一真实来源。

答案3

=AND(NOT(ISERROR(FIND("@",A2))),NOT(ISERROR(FIND(".",A2))),ISERROR(FIND(",",A2)),ISERROR(FIND(" ",A2)),RIGHT(A2,1)<>".",ISNUMBER(MATCH("@.?*",A2,0)))

相关内容