php - 使用正则表达式阻止某些电子邮件提供商

标签 php regex cakephp email-validation

请不要对这个问题投反对票,因为我正在寻找的答案不是某人应该追求的答案。我完全知道这一点,但这不是我的主意,我只需要提供 :D

在 cakephp 中,我的模型中有以下数据条目:

    'email' => array(
        'email' => array(
            'rule' => array('email',false,'(^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$)')
        ),
    )

email规则是cakephp数据校验中常用的函数,第二个和第三个参数可选。第三个是正则表达式。我对给定的正则表达式字符串不满意,所以我添加了自己的。现在我想排除 Gmail、Hotmail 和 yahoo 地址。

如何更改正则表达式,使这些地址产生错误结果?我做对了。

最佳答案

您到底为什么要排除 gmail、hotmail 和 yahoo 地址?有很多人只有这些地址之一,没有其他地址。这是一个坏主意。如果您的目标是特定的“受众”,我建议您改为列出允许的域。

无论如何,这里有一个功能性正则表达式,它比您已有的要短。试试看:

\b[\w\.-]+@((?!gmail|googlemail|yahoo|hotmail).)[\w\.-]+\.\w{2,4}\b

关于php - 使用正则表达式阻止某些电子邮件提供商,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6548210/

相关文章:

cakephp - TCPDF QR Code 一直不一样

php - IE9 中的 SEC7111 问题提示 https 内容

php - 将参数绑定(bind)到 pdo 函数

php - 在登录 PHP MySql 时检索加盐 MD5 密码

REGEXREPLACE 字符的最后一次出现

php - 复杂的正则表达式 : get all strings that end with ":any-number-here" between brackets

python - 带点的先行断言

CakePHP:在 AppController 中调用函数

cakephp - 如何仅在 CakePHP 3.0 中更新或保存特定字段?

php - 苹果推送通知 - PHP