阻止或阻止临时电子邮件地址域
我是jQuery和正则表达式的新手,想知道从designchemical.com向这个函数添加额外的临时电子邮件域的最佳方法是什么?
// prepare the form when the DOM is ready $(document).ready(function() { $('#submit').click(function() { $(".error").remove(); var hasError = false; var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/; var emailblockReg = /^([\w-\.]+@(?!mailinator.com)(?!guerrillamail.com)(?!mytrashmail.com)(?!mailexpire.com)([\w-]+\.)+[\w-]{2,4})?$/; var emailaddressVal = $("#Email").val(); if(emailaddressVal == '') { $("#Email").after('Please enter your email!'); hasError = true; } else if(!emailReg.test(emailaddressVal)) { $("#Email").after('Enter a valid email!'); hasError = true; } else if(!emailblockReg.test(emailaddressVal)) { $("#Email").after('No Disposable E-Mail Address!'); hasError = true; } if(hasError == true) { return false; } }); });
首先,我要说明你应该总是在后端进行validation。 但是如果你仍然想使用jQuery(用于初步筛选等),我会这样做:
将另一个组添加到电子邮件正则表达式:
var emailReg = /^([\w-\.]+@(([\w-]+\.)+[\w-]{2,4}))?$/;
创建或传入一系列不需要的域:
var bad_domains = ['comcast.net', 'gmail.com'];
针对每个bad_domain
检查域:
var emailMatch = emailAddressVal.match(emailRex) domain = emailMatch[3]; for (var i = 0; i < bad_domains.length; i += 1) { if (domain.toLowerCase() == bad_domains[i]) return false; }
要添加一些自定义操作,只需将return false
替换为该自定义操作即可。
你可以在这里使用免费服务DEAGuard: https ://deaguard.eu.org
它包含5000多个虚假提供程序,并返回JSON / XML或Plain。
建议您在后端进行validation,因为JavaScript可以在客户端截获和操作。 此外,每天都会显示一次性电子邮件,如果您不希望每天更新列表,则可以使用第三方API。
例如,您可以使用我的API antideo.com
这是一个PHP示例:
$request = file_get_contents('http://api.antideo.com/email/u978293@mvrht.net'); $response = gzdecode($request); $result = json_decode($response); if($result['disposable']) { echo 'Email is disposable'; } else { // email is not disposable do you stuff here echo 'Email is not disposable'; }
和使用jQuery的JavaScript:
$.getJSON('https://api.antideo.com/email/u978293@mvrht.net',function(result){ if(result['disposable']) { console.log('Email is disposable'); } else { // email is not disposable do you stuff here console.log('Email is not disposable'); } })