如何在提交表单时限制特定的电子邮件域

时间:2015-02-26 09:42:51

标签: javascript php jquery html regex

我正在尝试限制在html / php下提交特定电子邮件域的表单。基本上我不希望任何用户注册特定的电子邮件域。

例如,除了以下内容之外,所有电子邮件域都可以;

@deny.com
@reject.net 
@spam.org

如何使用jQuery,正则表达式或更好的方法来实现此行为?

提前致谢,

4 个答案:

答案 0 :(得分:3)

您可以使用Javascript / Jquery来实现此目的。创建一个验证电子邮件的功能

var rejectList = [ "deny.com" , "reject.net" ];

function validateEmailField()
{
var emailValue = $('#email-input').val(); // To Get Value (can use getElementById)
var splitArray = emailValue.split('@'); // To Get Array

if(rejectList.indexOf(splitArray[1]) >= 0)
{
// Means it has the rejected domains
return false;
}
return true;

}

所以在发布表单之前执行此函数并检查值。

答案 1 :(得分:2)

您可以通过HTML5输入标记属性(模式)实现相同的目标。 比如你的域名是foo.com,那么代码将是:

<input id="email" type="email" pattern="[a-z.]*[@]\bfoo.com" required>

您还可以使用DOM元素的setCustomValidity更改错误消息。

document.getElementById('email').setCustomValidity("Please use an @foo.com email address.");

答案 2 :(得分:0)

如果要在服务器端进行验证,可以使用此脚本,否则可以使用jquery或javascript进行相同类型的验证

    $denied = array("deny.com","reject.net","spam.org");

    function getDomainFromEmail($email)
    {
    // Get the data after the @ 
    $domain = substr(strrchr($email, "@"), 1);

    return $domain;
    }

    $email = 'the_username_here@deny.com';
    $domain = getDomainFromEmail($email);
    echo $domain;
    if (in_array($domain, $denied)) {
        //denied user alert
        echo "denied";
    }
    else
    {
    //valid user
    echo "valid";
    }

答案 3 :(得分:0)

您可以在输入标签中使用 pattern 属性。它指定一个正则表达式,在表单提交时检查 元素的值。

<input type="email" id="email"
   pattern=".+@gmail.com" size="30" required>

上面的代码只接受以域@gmail.com

结尾的电子邮件