2017-07-30 58 views
0

在JavaScript中學習正則表達式。我需要檢查輸入的電子郵件。檢查輸入的電子郵件地址

這樣:

reg=/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/ 

但我需要檢查,如果該電子郵件上@google.com@me.com結束。像/@google.com$|@me.com$/。幾乎打破了我的想法。請幫助我)

+0

看看這個帖子https://stackoverflow.com/a/46181/8298495 –

回答

3

從編程的角度來看,您應該首先檢查您的電子郵件字符串terminates@google.com@me.com,然後才運行您的正則表達式。

這會節省您的時間:正則表達式將成爲您知道的所有通用郵件格式正則表達式,並且您可以在任何其他時間添加更多域過濾器(將終止域放入數組或配置中...)。

它的CPU密度也很低。如果你需要連續執行這些檢查,並期望將大量電子郵件過濾出來,那麼你會注意到一個明顯的區別:啞字符串比較比正則表達式快得多。


var emails = ['[email protected]', '[email protected]', 'hacker";DROP TABLES;@me.com' ]; 
 
var domains = ['gmail.com', 'me.com']; 
 

 
function validateEmailFormat(email) { 
 
    return /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email) 
 
} 
 

 
function validateEmailDomain(email) { 
 
    for (i in domains) { 
 
\t if (email.endsWith('@'+domains[i])) { 
 
\t  return true; 
 
\t } 
 
    } 
 
    return false; 
 
} 
 

 
for (i in emails) { 
 
    email = emails[i]; 
 
    if (validateEmailDomain(email) && validateEmailFormat(email)) { 
 
\t console.log('OK for '+email); 
 
    } else { 
 
\t console.log('NOT OK for '+email); 
 
    } 
 
}

+0

所以最好這樣做'return/^ \ w +([ .-]?\ w +)* @ \ w +([\ .-]?\ w +)*(\。\ w {2,3})$ /。test(string)&& /@outlook\.com$|@我\ .COM $ /測試(串)'? – RoGGeR

+0

不,我會給你寫一個僞代碼的例子 – Fabien

+0

好的,謝謝!我將等待 – RoGGeR

1

用正則表達式驗證電子郵件地址是一件棘手的事情。我想如果你只想要允許某些域,它會簡化一些東西。喜歡的東西可以做的伎倆:

\[email protected](google|me)\.com$ 

\w+@之前當然了簡化。把它擴展到你需要的東西...