Php 使用regex进行简单的电子邮件验证

Php 使用regex进行简单的电子邮件验证,php,preg-match,Php,Preg Match,可能的重复项: 在我的注册表格上,用户将添加他的电子邮件,然后收到一封电子邮件来验证他的帐户。然而,我想有一个简单的电子邮件验证,我想知道以下是适当的 <?php $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."; } el

可能的重复项:

在我的注册表格上,用户将添加他的电子邮件,然后收到一封电子邮件来验证他的帐户。然而,我想有一个简单的电子邮件验证,我想知道以下是适当的

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

试试:

if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
  echo 'Valid';
} else {
  echo 'Invalid';
}

除正则表达式外,您还可以使用:


正则表达式不必要地禁止子域,例如
user@unit.company.com
。此外,您不应该使用

不要重新发明你自己的轮子,而是使用:


电子邮件验证有点棘手,因为这种方式比人们想象的更加不受限制。例如,以下都是有效的电子邮件地址:

  • “Abc\@def”@example.com
  • “Fred Bloggs”@example.com
  • “Joe\Blow”@example.com
  • "Abc@def“@example.com
  • 客户/部门=shipping@example.com
  • $A12345@example.com
  • !!def!xyz%abc@example.com
  • _somename@example.com
用于电子邮件验证的正确正则表达式看起来像这样,我甚至不会尝试去研究;)但是,在使用PHP时,您应该真正使用,如下所示:

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


似乎包含原始电子邮件格式规范,但我认为2822(如上链接)只是原始RFC的修订版。

您可以使用
。或者使用PHPs内置正则表达式验证带有
filter\u var($email,filter\u VALIDATE\u email)
的电子邮件。你的可能太基本了。(这两个示例都是您在这里交替使用的。)例如,您的正则表达式不会与邮件匹配,如:mailtest@Пааа.ааааа或mailtest@例え.テスト 看:@Nikolai:这个问题被否决了,因为你没有找到一个已经存在的答案。这个网站不是重复同样的问题和答案。@Kaoukkos-猜猜怎么着?你无法控制我们做什么。克服它。如果你想验证电子邮件,这绝对是你应该做的。验证电子邮件并不是一件容易的事情,而filter_var做得和任何事情一样好。这就是说,电子邮件验证并非绝对必要,因为它不会告诉你电子邮件是否真实/有效。
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
  echo "Valid email address.";
} else {
  echo "Invalid email address.";
}
$valid = filter_var($email, FILTER_VALIDATE_EMAIL);
# $valid will be TRUE if the email address was valid,
# otherwise FALSE.