2013-03-12 67 views
1

我是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-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 
      var emailblockReg = /^([\w-\.][email protected](?!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> 
+1

构建''使用正则表达式的新emailblockReg'() '你可以在哪里使用字符串操作来从一个字符串数组中创建正则表达式。 – 2013-03-12 20:33:29

+0

当然,值得一提的是,任何在客户端执行的阻塞都可以被用户轻易地绕过,因此也需要在服务器上完成。特别是如果目的是为了防止僵尸工具注册到您的网站,您不能依赖JavaScript代码,因为僵尸工具通常会完全绕过它。 – Spudley 2013-03-12 21:07:39

回答

2

首先,我会先说这个,说你应该总是在后台做验证。但是,如果你仍然想使用jQuery(初步筛选,等),这里是我会怎么做:

添加另一个组的电子邮件正则表达式:

var emailReg = /^([\w-\.][email protected](([\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即可。

0

建议您在后端进行验证,因为可以在客户端拦截和操纵JavaScript。此外,每天都会出现一次性电子邮件,如果您不想每天更新清单,则可以简单地使用第三方API。

例如,你可以使用我的API antideo.com

这里是一个PHP例子:

$request = file_get_contents('http://api.antideo.com/email/[email protected]'); 
$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'; 
} 

而且使用JavaScript的jQuery:

$.getJSON('https://api.antideo.com/email/[email protected]',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'); 
    } 
}) 
相关问题