書寫一個(gè)用于驗(yàn)證郵箱的正則表達(dá)式

首來看幾個(gè)合法郵箱的例子:

  • 1234@qq.com(純數(shù)字)
  • wang@126.com(純字母)
  • wang123@126.com(數(shù)字、字母混合)
  • wang123@vip.163.com(多級(jí)域名)
  • wang_email@outlook.com(含下劃線 _
  • wang.email@gmail.com(含英語句號(hào) .

根據(jù)對(duì)以上郵箱的觀察,可將郵箱分為兩部分(“@”左邊和右邊部分)來進(jìn)行分析:

  1. 左邊部分可以有數(shù)字、字母、下劃線(_)和英語句號(hào)(.),因此可以表示成:[A-Za-z0-9]+([_\.][A-Za-z0-9]+)*。
  2. 右邊部分是域名,按照域名的規(guī)則,可以有數(shù)字、字母、短橫線(-)和英語句號(hào)(.),另外頂級(jí)域名一般為 2 ~ 6 個(gè)英文字母(比如“cn”、“com”、“site”、“group”、“online”),故可表示為:([A-Za-z0-9\-]+\.)+[A-Za-z]{2,6}

注意兩點(diǎn):

  • 考慮到匹配郵箱時(shí)字符串的一頭一尾不能有其它字符,故要加上開始標(biāo)志元字符 ^ 和結(jié)束標(biāo)志元字符 $。
  • 英語句號(hào)(.)是正則表達(dá)式的元字符,因此要進(jìn)行轉(zhuǎn)義(\.)。

用于郵箱驗(yàn)證的函數(shù)及測(cè)試用例如下:

/* 用于郵箱驗(yàn)證的函數(shù) */
function validateEmail (email) {
  // 郵箱驗(yàn)證正則
  var reg = /^[A-Za-z0-9]+([_\.][A-Za-z0-9]+)*@([A-Za-z0-9\-]+\.)+[A-Za-z]{2,6}$/;
  return reg.test(email);
}

// 測(cè)試用例
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 + ' 無效';
});
// 測(cè)試用例均有效
console.log(res);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容