2

我是 jQuery 和正则表达式的新手,想知道从 designchemical.com 向这个函数添加额外的临时电子邮件域的最佳方法是什么?

<script type="text/JavaScript">
// 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('<span class="error">Please enter your email!</span>');
                hasError = true;
            } else if(!emailReg.test(emailaddressVal)) {    
                $("#Email").after('<span class="error">Enter a valid email!</span>');
                hasError = true;
            } else if(!emailblockReg.test(emailaddressVal)) {   
                $("#Email").after('<span class="error">No Disposable E-Mail Address!</span>');
                hasError = true;
            } 

            if(hasError == true) { return false; }
    }); 
});
</script>
4

3 回答 3

2

首先,我会说您应该始终在后端进行验证。但是,如果您仍然想使用 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为该自定义操作。

于 2013-03-12T20:46:57.853 回答
1

建议在后端进行验证,因为 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');
   }
})
于 2018-01-12T11:25:51.753 回答
-1

您可以在这里使用免费服务 DEAGuard:https ://deaguard.eu.org

它包含 5000 多个虚假提供程序,并返回 JSON/XML 或 Plain。

于 2017-08-16T12:32:08.950 回答