首來看幾個合法郵箱的例子:javascript
1234@qq.com
(純數字)wang@126.com
(純字母)wang123@126.com
(數字、字母混合)wang123@vip.163.com
(多級域名)wang_email@outlook.com
(含下劃線 _
)wang.email@gmail.com
(含英語句號 .
)根據對以上郵箱的觀察,可將郵箱分爲兩部分(「@」左邊和右邊部分)來進行分析:java
_
)和英語句號(.
),所以能夠表示成:[A-Za-z0-9]+([_\.][A-Za-z0-9]+)*
-
)和英語句號(.
),另外頂級域名通常爲 2 ~ 6 個英文字母(好比「cn」、「com」、「site」、「group」、「online」),故可表示爲:([A-Za-z0-9\-]+\.)+[A-Za-z]{2,6}
要注意兩點:正則表達式
^
和結束標誌元字符 $
。.
)是正則表達式的元字符,所以要進行轉義(\.
)。用於郵箱驗證的函數及測試用例以下:函數
/* 用於郵箱驗證的函數 */
function validateEmail (email) {
// 郵箱驗證正則
var reg = /^[A-Za-z0-9]+([_\.][A-Za-z0-9]+)*@([A-Za-z0-9\-]+\.)+[A-Za-z]{2,6}$/;
return reg.test(email);
}
// 測試用例
var emailArr = ['1234@qq.com', 'wang@126.com', 'wang123@126.com', 'wang123@vip.163.com', 'wang_email@outlook.com', 'wang.email@gmail.com'];
var res = emailArr.map(function (item) {
if (validateEmail(item)) {
return item + ' 有效';
}
return item + ' 無效';
});
// 測試用例均有效
console.log(res);
複製代碼