我有这个功能来验证一个电子邮件地址:
function validateEMAIL($EMAIL) {
$v = "/[a-zA-Z0-9_-.+]+@[a-zA-Z0-9-]+.[a-zA-Z]+/";
return (bool)preg_match($v, $EMAIL);
}
这样可以检查电子邮件地址是否有效吗?
我有这个功能来验证一个电子邮件地址:
function validateEMAIL($EMAIL) {
$v = "/[a-zA-Z0-9_-.+]+@[a-zA-Z0-9-]+.[a-zA-Z]+/";
return (bool)preg_match($v, $EMAIL);
}
这样可以检查电子邮件地址是否有效吗?
当前回答
使用以下代码:
// Variable to check
$email = "john.doe@example.com";
// Remove all illegal characters from email
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
// Validate e-mail
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo("Email is a valid email address");
}
其他回答
/(?![[:alnum:]]|@|-|_|\.)./
现在,如果你使用带有type=email的HTML5表单,那么你已经有80%的安全性了,因为浏览器引擎有它们自己的验证器。为了补充它,将这个正则表达式添加到你的preg_match_all()并对其求反:
if (!preg_match_all("/(?![[:alnum:]]|@|-|_|\.)./",$email)) { .. }
找到HTML5表单使用的正则表达式进行验证 https://regex101.com/r/mPEKmy/1
我准备了一个检查电子邮件有效性的函数:
function isValidEmail($email)
{
$re = '/([\w\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)/m';
preg_match_all($re, $email, $matches, PREG_SET_ORDER, 0);
if(count($matches) > 0) return $matches[0][0] === $email;
return false;
}
FILTER_VALIDATE_EMAIL的问题是,它甚至认为无效的电子邮件是有效的。
以下是例子:
if(isValidEmail("foo@gmail.com")) echo "valid";
if(!isValidEmail("fo^o@gmail.com")) echo "invalid";
的Python和PHP实现 正确验证任何电子邮件地址,即 邮件服务器确认是真的 域是实的。
在GPL-3.0许可下发布。
就是这样:
https://lja.fi/index.php/github-stuff/
--李雅
我认为你最好使用PHP的内置过滤器-在这种特殊情况下:
当提供FILTER_VALIDATE_EMAIL参数时,它可以返回true或false。
您可以为此使用filter_var。
<?php
function validateEmail($email) {
return filter_var($email, FILTER_VALIDATE_EMAIL);
}
?>