我正在尝试限制在html / php下提交特定电子邮件域的表单。基本上我不希望任何用户注册特定的电子邮件域。
例如,除了以下内容之外,所有电子邮件域都可以;
@deny.com
@reject.net
@spam.org
如何使用jQuery,正则表达式或更好的方法来实现此行为?
提前致谢,
答案 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
结尾的电子邮件