所有有效的电子邮件是否包含至少一个@符号?

时间:2015-01-16 06:25:43

标签: javascript validation email

我不打算提出完整的电子邮件验证。我试图阻止一个特定的问题:

我已经让用户使用我网站上的联系表单,其中要求提供“Name”,“Email”和“Message”,并且只是出于搞笑的错误,我获取信息,“First Name”,“Last Name”,“Message”,我想,“我在哪里留下黄页?”

所以,我不想验证电子邮件,我只是想提醒大家,这不是姓,我们要求发送电子邮件。

我在想我检查一个@符号,我想确保我不会忽略有效的电子邮件。

是否有有效的电子邮件,其中没有@个符号?

5 个答案:

答案 0 :(得分:4)

如RFC5322第3.4.1节中所定义:

  

addr-spec是包含a的特定Internet标识符      本地解释的字符串后跟at符号字符(“@”,      ASCII值64)后跟互联网域。

http://tools.ietf.org/html/rfc5322

答案 1 :(得分:2)

根据RFC5322:

  

addr-spec是一个特定的Internet标识符,它包含一个本地解释的字符串,后跟at符号字符(“@”,ASCII值64),后跟Internet域。

所以,是的,所有电子邮件地址都必须包含@字符。

在互联网接管世界之前, 可能使电子邮件地址具有其他格式,例如FidoNet邮件地址1:170/918.10,FidoNet节点上的用户编号10 {{1 }}

但考虑到互联网用户与FidoNet用户的比例目前大约为数十亿或更多,这仅仅是为了历史利益。

答案 2 :(得分:1)

所有有效的电子邮件地址都包含@符号。您可以阅读Internet邮件格式标准以获取更多信息:http://tools.ietf.org/html/rfc5322

具体为3.4.1。地址规范:https://tools.ietf.org/html/rfc2822#section-3.4.1

答案 3 :(得分:1)

是的,根据 RFC5322,鉴于 local-name@domain.com... 的基本格式,每个电子邮件地址都必须有一个 at 符号。

<块引用>

addr-spec 是一个特定的 Internet 标识符,它包含一个本地解释的字符串,后跟 at-sign 字符(“@”,ASCII 值 64),后跟一个 Internet 域。

但请确保不要只验证一个 at-sign,因为一个电子邮件地址可能有多个。毕竟,还有其他 RFC!

RFC2822 使我们能够在电子邮件地址中使用带引号的字符串...

<块引用>

3.2.2.带引号的字符

有些字符是为特殊解释保留的,例如 分隔词汇标记。允许将这些字符用作 未解释的数据,提供引用机制。

quoted-pair = ("" text) / obs-qp

所以 "@"@gmail.com 是一个有效的电子邮件地址。

也不要忘记RFC5321!这定义了另一个基本过程,用于在您的电子邮件地址中包含任意数量的 @ 符号...

<块引用>

请注意,反斜杠“\”是一个引号字符,用于 指示下一个字符将按字面使用(而不是 它的正常解释)。例如,“Joe\,Smith”表示一个 单个九个字符的用户名字符串,逗号是 该字符串的第四个字符。

那么,\@@gmail.com 也是技术上有效的电子邮件地址。

答案 4 :(得分:0)

今天,是的(请参阅其他答案);但历史性的答案是:不。

原始标准(RFC822 ff)使得拥有非常简短,有效且有效的电子邮件地址(例如“ i.me”)成为可能。 (DDJ曾经参加过比赛。) @只是表示主机中的邮箱;因此,如果您拥有整个主机(例如您自己的服务器或PC),则不需要@。

检查电子邮件地址的规则过去很复杂。为了在某​​种程度上简化它们并适应许多损坏的“检查器”的不良作法,最初将其无效的假设(最初是无效的)最终纳入了官方标准。