关于php:使用正则表达式进行简单的电子邮件验证

Using regex for simple email validation

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicates:
What is the best regular expression for validating email addresses?
Is there a php library for email address validation?

在我的注册表上,用户会添加他的电子邮件,然后收到一封电子邮件来验证他的帐户。不过,我希望有一个简单的电子邮件验证,我想知道以下是否合适。

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$email ="[email protected]";

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.";
}
?>


安全: </P >

1
2
3
4
5
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
  echo 'Valid';
} else {
  echo 'Invalid';
}

你的正则表达式unnecessarily forbids子域,如[email protected]。additionally,你不应该用废弃的eregiT。 </P >

而不是你自己的大学reinventing轮,使用filter_var: </P >

1
2
3
4
5
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
  echo"Valid email address.";
} else {
  echo"Invalid email address.";
}


除了从一个正则表达式,你可以使用filter_var方针: </P >

1
2
3
4
if (filter_var('[email protected]', 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 >

1
2
3
$valid = filter_var($email, FILTER_VALIDATE_EMAIL);
# $valid will be TRUE if the email address was valid,
# otherwise FALSE.

表明对包含RFC822格式规范的原始邮件,但我认为那是2822(AS联以上)的冰只是一个审计/修改的那份RFC。 </P >