簡體   English   中英

如何通過白名單域名正則表達式驗證電子郵件

[英]How to validate email by whitelist domain regex

我想通過白名單來驗證域,例如:.com,.co.id,.org,

這里我有一個正則表達式模式:

/^[_a-z0-9-]+(\\.[_a-z0-9-]+)*(\\+[a-z0-9-]+)?@[a-z0-9-]+(\\.[a-z0-9-]+)*$/i;

因此,如果用戶輸入:

  • example@example.gov-> 無效
  • example@example.com-> 有效

有人可以幫我嗎? 謝謝

嘗試這個

 let e = ["example@example.gov", "example@example.com", "example@example.co.id", "example@example.org"]; let d = [".com", ".co.id", ".org"]; let f = x=> d.some(y => new RegExp(`@.*?(${y})`).test(x)); let v = e.filter(x=> f(x)); console.log(v); // show valid emails 

regexp的說明 :它匹配@之后第一個點之后的字母。 首先,我們以非貪婪的方式在@之后加上.*?得到任何字符.*? 然后我們打開組(在第一個點\\.之前,並檢查所有剩余的字符是否是${y})${y})

您可以分兩步進行:

 function validateEmail(email) { //check that the input string is an well formed email var emailFilter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/; if (!emailFilter.test(email)) { return false; } //check that the input email is in the whitelist var s, domainWhitelist = [".com", "co.id", ".org"]; for (s of domainWhitelist) if(email.endsWith(s)) return true; //if we reach this point it means that the email is well formed but not in the whitelist return false; } console.log("validate ->" + validateEmail("")); console.log("validate abc ->" + validateEmail("abc")); console.log("validate example@example.gov ->" + validateEmail("example@example.gov")); console.log("validate example@example.com ->" + validateEmail("example@example.com")); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM