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

Javascript 如何在提交表单时限制特定的电子邮件域,javascript,php,jquery,html,regex,Javascript,Php,Jquery,Html,Regex,我试图限制在html/php下提交特定电子邮件域的表单。基本上我不希望任何用户注册特定的电子邮件域 例如,所有的电子邮件域都可以,除了下面的域 @deny.com @reject.net @spam.org 如何使用jQuery、正则表达式或其他更好的方法来实现这种行为 提前感谢,您可以使用Javascript/Jquery来实现这一点。创建一个函数来验证电子邮件 var rejectList = [ "deny.com" , "reject.net" ]; function valida

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

例如,所有的电子邮件域都可以,除了下面的域

@deny.com
@reject.net 
@spam.org
如何使用jQuery、正则表达式或其他更好的方法来实现这种行为


提前感谢,

您可以使用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;

}

因此,在发布表单之前,请执行此函数并检查值。

如果要在服务器端执行验证,可以使用此脚本,或者可以使用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";
    }

您可以通过HTML5输入标记属性(模式)实现相同的功能。 例如,假设您的域是foo.com,那么代码将是:

<input id="email" type="email" pattern="[a-z.]*[@]\bfoo.com" required>
可以在输入标记中使用pattern属性。它指定一个正则表达式,在表单提交时根据该正则表达式检查元素的值

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


上面的代码只接受以域名@gmail.com结尾的电子邮件

你自己做过什么吗?是的,这就是我来这里的原因。我想知道你能选择什么样的最佳方式,然后向我们展示你的尝试。@FrebinFrancis谢谢你,那些脚本工作得很好。很好的解决方案。在发布之前,我将其翻译成php来验证我的电子邮件地址。效果很好。
<input type="email" id="email"
   pattern=".+@gmail.com" size="30" required>