是否有任何规则允许在任何电子邮件ID中指定数量的@符号。 如果我们要使用PHP检查电子邮件ID是否有效,请记住我。
答案 0 :(得分:22)
如果允许引用多个@
。我不得不问你为什么需要这些信息。请请不要尝试编写正则表达式/函数或其他任何验证emailaddresses。您必须担心3个rfc(如果您想考虑unicode,可能需要4个)。你将失败,而 会让你发疯。
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中使用“@”。