本问题已经有最佳答案,请猛点这里访问。
Possible Duplicates:
What is the best regular expression for validating email addresses?
Is there a php library for email address validation?
在我的注册表上,用户会添加他的电子邮件,然后收到一封电子邮件来验证他的帐户。不过,我希望有一个简单的电子邮件验证,我想知道以下是否合适。
$email ="someone@example.com";
if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
echo"Valid email address.";
}
else {
echo"Invalid email address.";
}
?>
你可以用来做这个。或者使用phps内置regex与filter_var($email, FILTER_VALIDATE_EMAIL)验证电子邮件。你的可能太基本了。(这两个例子都是你在这里交替使用的。)
例如,您的regex不匹配电子邮件,如:mail test@mniример.weсmnifyтание或mailtest@example_._参见:idn.icann.org/e-mail_test
@尼古拉:这个问题被否决了,因为你没有找到已经存在的答案。这个网站不是一次又一次重复同样的问题和答案。
@你猜怎么着?你无法控制我们的行为。克服它。
安全: </P >
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo 'Valid';
} else {
echo 'Invalid';
}
你的正则表达式unnecessarily forbids子域,如user@unit.company.com。additionally,你不应该用废弃的eregiT。 </P >
而不是你自己的大学reinventing轮,使用filter_var: </P >
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo"Valid email address.";
} else {
echo"Invalid email address.";
}
+ 1。如果你想验证邮件,这绝对是你应该做的。验证一封电子邮件不是一件容易的事情,而且过滤器var做得和任何事情一样好。也就是说,电子邮件验证并不是绝对必要的,因为它不会告诉你电子邮件是否真实有效。
除了从一个正则表达式,你可以使用filter_var方针: </P >
if (filter_var('someone@example.com', FILTER_VALIDATE_EMAIL)) === false)
{
echo"Invalid email address.";
}
电子邮件验证(一块冰,狡猾的,因为那是在RFC specifies大学的电子邮件地址的格式不受限制的冰路,我想更多的人。例如,下面是所有有效的电子邮件地址。 </P >
"ABC""def""http://example.com
"和平"就是"http://example.com
"乔",把"http://example.com"
"ABC DEF http://example.com"""
客户/ ="http://example.com航运部
"http://example.com a12345美元
!!!!!!!def!XYZ为ABC"http://example.com
_ somename http://example.com"
正则表达式的正确的电子邮件验证表明到看什么呢,这在将不甚至尝试到变成的样子);但是,当使用PHP,你应该如何使用过滤器,_(SO)类: </P >
$valid = filter_var($email, FILTER_VALIDATE_EMAIL);
# $valid will be TRUE if the email address was valid,# otherwise FALSE.
表明对包含RFC822格式规范的原始邮件,但我认为那是2822(AS联以上)的冰只是一个审计/修改的那份RFC。 </P >