这是验证表单中的电子邮件地址的正确方法

时间:2013-10-28 13:33:26

标签: php forms validation email

第一篇帖子在这里忍受我哈哈

我想在这里查看我的工作我有一个验证电子邮件地址的表单,但现在更改为php 5.3错误

可以请一些人查看我的更改,并告诉我,因为它无法正常工作而失踪

OLD WAY

function valid_email($email)
{
// check an email address is valid
if (ereg('^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$', $email))
return true;
else
return false;
}

新方式

function valid_email($email)
{
// check an email address is valid
if (preg_match(('^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$', $email))
return true;
else
return false;
}

表格发送没有电子邮件验证。 我不知道有什么简单但我无法解决它

提前致谢

2 个答案:

答案 0 :(得分:1)

请勿使用正则表达式验证电子邮件地址或超链接。另外,据我所知,ereg已被弃用。从现在开始使用preg和正则表达式。验证电子邮件地址的代码是:

if (filter_var($email_address, FILTER_VALIDATE_EMAIL)) {
    echo "This email address: $email_address is invalid. Enter a new one please";
}

如果您必须使用正则表达式,请使用this RFC-822 regex ,但对于你想要做的事情,这可能有点过于复杂。

答案 1 :(得分:0)

首先,与ereg不同,使用preg_match,您需要将模式封装在分隔符中,通常为“/”,但如果您愿意,也可以使用其他字符。例如,

preg_match('/^pattern$/', $email)

其次在你的代码中有一个额外的“(”之后的函数名称“preg_match((”应该是“preg_match(”而不是。

您可能需要考虑使用以下正则表达式。它可以防止域名以短划线(例如username@-domain-.com)开头或结尾,但仍然允许在域名中使用短划线,例如username@my-domain.com

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