在 PHP 中使用正则表达式进行电子邮件验证
Posted
技术标签:
【中文标题】在 PHP 中使用正则表达式进行电子邮件验证【英文标题】:Email validation using regular expression in PHP 【发布时间】:2012-11-23 01:51:35 【问题描述】:我对正则表达式非常陌生。我正在用 php 开发一个项目,我需要验证电子邮件地址。在这个网站和谷歌搜索后,我发现下面的正则表达式说它应该是最好的。
if (preg_match("/^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?))255,)(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?))65,@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]64,)(?:(?:(?:xn--)?[a-z0-9]+(?:-[a-z0-9]+)*\.)1,126)1,(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]1,4(?::[a-f0-9]1,4)7)|(?:(?!(?:.*[a-f0-9][:\]])7,)(?:[a-f0-9]1,4(?::[a-f0-9]1,4)0,5)?::(?:[a-f0-9]1,4(?::[a-f0-9]1,4)0,5)?)))|(?:(?:IPv6:(?:(?:[a-f0-9]1,4(?::[a-f0-9]1,4)5:)|(?:(?!(?:.*[a-f0-9]:)5,)(?:[a-f0-9]1,4(?::[a-f0-9]1,4)0,3)?::(?:[a-f0-9]1,4(?::[a-f0-9]1,4)0,3:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]2)|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]2)|(?:[1-9]?[0-9])))3))\]))$/iD", strtolower($mail_address)))
echo "valid email";
但是当我使用它时,我会收到错误提示,
"Warning: preg_match(): No ending delimiter '/' found"
这段代码有什么问题?
【问题讨论】:
电子邮件验证是一条模糊的沟,但我不得不说你的正则表达式看起来相当可疑;这是一个答案很好的线程,它引用了 Django 中使用的正则表达式:***.com/questions/3217682/… 编辑:Wayne 下面的答案也应该适合你! 【参考方案1】:/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]2,6$/ix
【讨论】:
【参考方案2】:电子邮件验证正则表达式(带有子域的域)
^((([a-z0-9]+[\-]0,1)+[a-z0-9]+?\.)+[a-z0-9][a-z0-9|\-]+[a-z0-9])@([a-z0-9]+[\-|\.]0,1[a-z0-9]+)+(.[a-z0-9]2,)+$
样本测试https://regex101.com/r/w5VBdf/20
带有子域的域
^([a-z0-9]+[\.|\-]0,1[a-z0-9](.[a-z0-9]2,)+)$
https://regex101.com/r/4Un8Tz/2
电子邮件用户名
^([a-z0-9]+[\.|\-]0,1[a-z0-9]1,)+@$
https://regex101.com/r/4Un8Tz/6
【讨论】:
此解决方案可能无法回答 OP 问题 请看看这些网站:TLD list; valid/invalid addresses; regex for RFC822 email address 你可以用?
替换0,1
,用+
替换1,
,用[\.|\-]
替换[.-]
,你应该学习一些基础的正则表达式(并重新阅读问题),有一个看regular-expressions.info【参考方案3】:
我来这里是为了寻找解决方案,Wayne Whitty 提出的答案确实可以完成这项工作。
顺便说一句,我认为值得一提的是filter_var
函数不符合 RFC5321。虽然文档没有说是,但某些 RFC5321 有效的电子邮件地址会被此功能标记为无效,例如:
正如这条评论所呈现的http://php.net/manual/pt_BR/function.filter-var.php#112492
【讨论】:
【参考方案4】:检查电子邮件是否有效的方法不止一种。
一个简单的方法是使用这个函数:
function validate($email)
return preg_match("/^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$/", $email);
来自此处的代码 sn-p:Basic Email Validation in PHP
虽然这种实现在大多数情况下都可以正常工作,但它可能会允许一些错误的电子邮件。 以下实现应该 100% 准确,但也相当复杂:
function validate($email)
$isValid = true;
$atIndex = strrpos($email, "@");
if (is_bool($atIndex) && !$atIndex)
$isValid = false;
else
$domain = substr($email, $atIndex + 1);
$local = substr($email, 0, $atIndex);
$localLen = strlen($local);
$domainLen = strlen($domain);
if ($localLen < 1 || $localLen > 64)
$isValid = false;
else if ($domainLen < 1 || $domainLen > 255)
$isValid = false;
else if ($local[0] == '.' || $local[$localLen - 1] == '.')
$isValid = false;
else if (preg_match('/\\.\\./', $local))
$isValid = false;
else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain))
$isValid = false;
else if (preg_match('/\\.\\./', $domain))
$isValid = false;
else if (!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^|~.-])+$/', str_replace("\\\\", "", $local)))
if (!preg_match('/^"(\\\\"|[^"])+"$/', str_replace("\\\\", "", $local)))
$isValid = false;
if ($isValid && !(checkdnsrr($domain, "MX") || checkdnsrr($domain ,"A")))
$isValid = false;
return $isValid;
此代码来自此处的 sn-p:Strict Email Validation in PHP
希望这会有所帮助!
【讨论】:
第二种实现无效。例如,foo@héhé.fr
是一个有效的电子邮件地址,函数会拒绝它。 foo(bar)@yahoo.com
、foo" "@yahoo.com
、foo"<"@yahoo.com
、foo">"@yahoo.com
等也一样。
简单但如果电子邮件域以“.co.uk”结尾怎么办?这种模式将不起作用......另外,你可以用 \w 替换这个“a-zA-Z0-9_”【参考方案5】:
使用这些正则表达式执行更彻底的验证。例如,它可以防止电子邮件地址中的相邻句点(如 aaa..bbb@example..com)根据 RFC 822 是无效的。
function isValidEmail($email)
return preg_match('/\A[a-z0-9]+([-._][a-z0-9]+)*@([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]2,4\z/', $email)
&& preg_match('/^(?=.1,64@.4,64$)(?=.6,100$).*/', $email);
见validate email address using regular expression in PHP。
【讨论】:
不适用于许多有效的电子邮件,例如:Jean-François+@anydomain.museum
【参考方案6】:
用这个代替正则表达式:
if(filter_var($email, FILTER_VALIDATE_EMAIL))
//Valid email!
使用正则表达式验证电子邮件地址是 not recommended,因为它肯定是 not pretty,尤其是如果您不想排除拥有根据 RFC 822 语法正确的有效电子邮件地址的人。
http://www.php.net/filter_var 是您最好的选择。
一个尝试根据 RFC 822 语法验证电子邮件地址的正则表达式的疯狂示例:
(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:
\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(
?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[
\t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\0
31]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\
](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+
(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:
(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)
?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\
r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[
\t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)
?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t]
)*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
\t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*
)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)
*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+
|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r
\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:
\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t
]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031
]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](
?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?
:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?
:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?
:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?
[ \t]))*"(?:(?:\r\n)?[ \t])*)*:(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\]
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|
\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>
@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"
(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?
:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[
\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-
\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(
?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;
:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([
^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\"
.\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\
]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\
[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\
r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\]
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]
|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \0
00-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\
.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,
;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?
:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[
^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]
]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)(?:,\s*(
?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(
?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[
\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t
])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t
])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?
:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|
\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:
[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\
]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)
?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["
()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)
?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>
@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[
\t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,
;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:
\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\[
"()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])
*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])
+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\
.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(
?:\r\n)?[ \t])*))*)?;\s*)
【讨论】:
我喜欢filter_var()
但不是 user@localhost
(是的,我知道 RFC 2822 与 RFC 2821 的争论,只是为了验证 2821 是不可能的,因为我们还没有谈论发送电子邮件)。那么 IDNA acc 呢? RFC 3490 ex: user@dömain.com
。同意,对于一般用途,这个工作得很好,但仍然不是 100% 可靠。
哦!顺便说一下,值得一提的是RFC 822 已过时,RFC 2822 现在用于 Internet 消息格式
filter_var
并不完全可靠,因为我遇到过一些完全有效的电子邮件 - petrović@fictionaldomain.com
被拒绝的情况。我仍在寻找一种方法将这个 - /^\pL+$/ui
- 包含到 filter_var 中,因为它似乎涵盖了我需要的东西 - 验证电子邮件,并允许非英语拉丁字符通过。
用于电子邮件验证的正则表达式的上帝版本:)【参考方案7】:
看起来你真的不需要更大的代码来验证电子邮件。
<?php
$email = "abc123@sdsd.com";
$regex = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]2,3)$/';
if (preg_match($regex, $email))
echo $email . " is a valid email. We can accept it.";
else
echo $email . " is an invalid email. Please try again.";
?>
试试这个让我知道
【讨论】:
不适用于(例如)超过 3 个字符的域扩展。不要使用这个。【参考方案8】:很奇怪,我刚刚尝试了你的代码对我很有效?! 尝试使用字符“....”而不是“....”关闭任何链
【讨论】:
【参考方案9】:您应该使用函数filter_vars()
来验证您的输入,而不是您自己的正则表达式。
例子:
filter_var('bob@example.com', FILTER_VALIDATE_EMAIL)
文档中的更多信息:http://php.net/manual/en/function.filter-var.php
【讨论】:
我喜欢filter_var()
但不是 user@localhost
(是的,我知道 RFC 2822 与 RFC 2821 的争论,只是为了验证 2821 是不可能的,因为我们还没有谈论发送电子邮件)。那么 IDNA acc 呢? RFC 3490 ex: user@dömain.com
。同意,对于一般用途,这个工作得很好,但仍然不是 100% 可靠。【参考方案10】:
删除正则表达式末尾的iD
【讨论】:
【参考方案11】:试试这个正则表达式会很好用
/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]2,6)$/
或php过滤器filter_var
filter_var($email, FILTER_VALIDATE_EMAIL)
喜欢
if(filter_var($email, FILTER_VALIDATE_EMAIL))
//yup its valid email
【讨论】:
以上是关于在 PHP 中使用正则表达式进行电子邮件验证的主要内容,如果未能解决你的问题,请参考以下文章
使用文档对象在页面上创建学生信息表。 信息表包括学号姓名性别电子邮件联系电话个人主页和联系地址, 信息表内容通过表单输入,提交前先使用正则表达式进行验证,联系地址不能超过20