在JavaScript中學習正則表達式。我需要檢查輸入的電子郵件。檢查輸入的電子郵件地址
這樣:
reg=/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/
但我需要檢查,如果該電子郵件上@google.com
或@me.com
結束。像/@google.com$|@me.com$/
。幾乎打破了我的想法。請幫助我)
在JavaScript中學習正則表達式。我需要檢查輸入的電子郵件。檢查輸入的電子郵件地址
這樣:
reg=/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/
但我需要檢查,如果該電子郵件上@google.com
或@me.com
結束。像/@google.com$|@me.com$/
。幾乎打破了我的想法。請幫助我)
從編程的角度來看,您應該首先檢查您的電子郵件字符串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);
}
}
用正則表達式驗證電子郵件地址是一件棘手的事情。我想如果你只想要允許某些域,它會簡化一些東西。喜歡的東西可以做的伎倆:
\[email protected](google|me)\.com$
的\w+
的@
之前當然了簡化。把它擴展到你需要的東西...
看看這個帖子https://stackoverflow.com/a/46181/8298495 –