电子邮件地址中可以包含多少@符号?

时间:2012-09-10 16:32:42

标签: php email-validation

是否有任何规则允许在任何电子邮件ID中指定数量的@符号。 如果我们要使用PHP检查电子邮件ID是否有效,请记住我。

6 个答案:

答案 0 :(得分:22)

如果允许引用多个@。我不得不问你为什么需要这些信息。请不要尝试编写正则表达式/函数或其他任何验证emailaddresses。您必须担心3个rfc(如果您想考虑unicode,可能需要4个)。你失败,而 会让你发疯。

See my previous answer for more information and a regex you may use if you have an older version of PHP

P.S。

如果有人错过了我的观点:尝试对自己进行一些验证,以“永远”自己验证电子邮件地址。

答案 1 :(得分:12)

可以有任何数字(在电子邮件地址的大小限制范围内),但最后一个必须是域名和"local part"之间的分隔符。

如果本地部分中存在@或任何其他“异常”字符(由RFC 5322定义),则MUST会出现在引号中,例如:"user@something"@example.com < / p>

答案 2 :(得分:8)

@个字符没有特定限制。

"very.(),:;<>[]\".VERY.\"very@\\ \"very\".unusual"@strange.example.com是有效地址。

另请参阅the Wikipedia page有关该主题的内容。

答案 3 :(得分:1)

我真正的问题是,在电子邮件中添加两个@符号是否合理? 它会如何运作?

我会将filter_var()FILTER_VALIDATE_EMAIL一起使用。以下是使用和输出的示例,

function testemail($email) {
    echo "'$email' => ";
    var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));    
    echo "<br />";
}

testemail('');
testemail('myemailsample.com');
testemail('myemail@sample');
testemail('myemail@sample.com');
testemail('myemail@@sample.com');
testemail('myemail@sa@mple.com');

输出,

  

''=&gt;布尔(假)
  'myemailsample.com'=&gt;布尔(假)
  'myemail @ sample'=&gt;布尔(假)
  'myemail@sample.com'=&gt; string(18)“myemail@sample.com”
  'myemail @@ sample.com'=&gt;布尔(假)
  'myemail @ sa @ mple.com'=&gt;布尔(假)

答案 4 :(得分:0)

要检查有效的电子邮件地址,我应该使用filter_var函数。它将验证字符串并返回true或false。您不必考虑正则表达式。

答案 5 :(得分:0)

addr-spec是包含a的特定Internet标识符    本地解释的字符串后跟at符号字符(“@”,    ASCII值64)后跟Internet域。在当地    解释的字符串是带引号的字符串或点原子。如果    string可以表示为点原子(也就是说,它包含no    除了文本字符或“。”之外的字符。被文字包围    字符),然后应该使用点原子形式和引用 -    字符串形式不应该使用。评论和折叠白色空间    不应该在addr-spec中使用“@”。

请参阅: - http://tools.ietf.org/html/rfc5322#section-3.4.1