【问题标题】:why is my email validation not working [closed]为什么我的电子邮件验证不起作用[关闭]
【发布时间】:2014-12-12 10:56:15
【问题描述】:

如果您能在 PHP 中验证电子邮件地址,我将不胜感激。我需要的电子邮件格式为 firstname.lastname@mohawkcollege.TLD、.com、.ca 或 .org,它们是有效的 TLD。

我的功能是:

function validateEmail($email)
{
    $regex = "/[a-zA-Z0-9_-.+]+@[a-zA-Z0-9-]+.[a-zA-Z]+/";
    if (!preg_match($regex, $email))
    {
        return "<li>Email is in wrong format</li>"
    }
}

【问题讨论】:

  • “不工作”是什么意思?你的脚本能运行吗?你试过什么?
  • 您应该转义第一个字符类中的最后一个连字符。也就是说,验证电子邮件地址是出了名的困难,尤其是使用 RegExp。使用 PHP filter_var() 函数并设置 FILTER_VALIDATE_EMAIL。
  • 根据您的问题,您的正则表达式应该是:regex101.com/r/zF1gI2/2 - 请更清楚您的问题,因为我认为这不正确...
  • 代码运行,但它接受我不想要的电子邮件格式。我希望电子邮件是 firstna.lastname@mohawkcollege.domain .ca 或 .com 或 .org
  • @PedroIt - 你了解你当前使用的正则表达式吗?它显然不检查 ​​mohawkcollege,更不用说那些 TLD。快速搜索像这样的PHP regex tutorial 可能会对您有所帮助。

标签: php html regex


【解决方案1】:

用途:

/[a-zA-Z0-9-_.+]+@[a-zA-Z0-9-]+.[a-zA-Z]+/

或

/[a-zA-Z0-9_\-.+]+@[a-zA-Z0-9-]+.[a-zA-Z]+/

把 - 放在 _ 之后会造成混淆,所以要么转义它,要么把它放在 _ 之前

【讨论】:

  • 好的,修复了姓名和姓氏部分,但不是我在 @ 之后需要的 mohawkcollege。我是 php 新手,我对正则表达式感到非常困惑。感谢您的帮助。
  • 这并没有解决问题......
  • 您的意思是您只验证 mohawkcollege.TLD?试试 [a-zA-Z0-9-_.+]+@mohawkcollege.[a-zA-Z]+
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-29
  • 2021-01-15
  • 2014-06-08
  • 1970-01-01
  • 1970-01-01
  • 2017-05-27
  • 2012-08-19
相关资源
最近更新 更多