2013-03-12 66 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'); 
    } 
}) 
相關問題