使用Regex阻止某些电子邮件提供商

时间:2011-07-01 12:53:40

标签: php regex cakephp email-validation

请不要低估这个问题,因为我正在寻找的答案不是某人应该追求的。我完全清楚这一点,但这不是我的想法,我只需要提供:D

在cakephp中,我的模型中有以下dataentry:

    '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]$)')
        ),
    )

电子邮件规则是cakephp数据验证中的常用功能,第二个和第三个参数是可选的。第三个是正则表达式。我对给定的正则表达式字符串不满意所以我添加了自己的字符串。现在我要排除Gmail,Hotmail和yahoo地址。

如何更改正则表达式,以便这些地址产生错误?我说不对。

2 个答案:

答案 0 :(得分:6)

为什么你想要排除gmail,hotmail和yahoo地址?有很多人只有这些地址之一而没有其他地址。这是一个坏主意。如果您定位到特定的“受众群体”,我建议您制作一个允许的域名列表。

无论如何,这是一个功能正则表达式,比你已经拥有的还要短......试试看:

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

答案 1 :(得分:2)

不要使用正则表达式。

正确的解决方案是explode() @处的电子邮件地址,然后使用纯字符串比较甚至是in_array()来检查域名是否已列入黑名单。

相关问题