首頁 web前端 js教程 JS做出驗證郵箱/郵件地址正規

JS做出驗證郵箱/郵件地址正規

Jun 09, 2018 pm 02:09 PM
信箱

這次帶給大家JS做出驗證信箱/郵件地址正規,JS做出驗證信箱/郵件地址正規的注意事項有哪些,以下就是實戰案例,一起來看一下。

規則定義如下:

  • 以大寫字母[A-Z]、小寫字母[a-z]、數字[0-9]、下滑線[_]、減號[-]及點號[.]開頭,並需重複一次至多次[ ]。

  • 中間必須包括@符號。

  • @之後需要連接大寫字母[A-Z]、小寫字母[a-z]、數字[0-9]、下滑線[_]、減號[-]及點號[ .],並需重複一次至多次[ ]。

  • 結尾必須是點號[.]連接2至4位的大小寫字母[A-Za-z]{2,4}。

利用上述規則給出如下正規表示式:

var pattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
登入後複製

完整測試程式碼

<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
  <title>邮箱/邮件地址的正则表达式及分析(JavaScript,email,regex)</title>
</head>
<body>
<p id="main"></p>
<script>
  var pattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
  w("pattern.test('cn42du@163.com') = "+pattern.test('cn42du@163.com')+";");
  w("pattern.test('ifat3@sina.com.cn') = "+pattern.test('ifat3@sina.com.cn')+";");
  w("pattern.test('ifat3.it@163.com') = "+pattern.test('ifat3.it@163.com')+";");
  w("pattern.test('ifat3_-.@42du.cn') = "+pattern.test('ifat3_-.@42du.cn')+";");
  w("pattern.test('ifat3@42du.online') = "+pattern.test('ifat3@42du.online')+";");
  w("pattern.test('毛三胖@42du.cn') = "+pattern.test('毛三胖@42du.cn')+";");
  function w(val) {
    document.getElementById("main").innerHTML += val +"<br />";
  }
</script>
</body>
</html>
登入後複製

測試結果:

pattern.test('cn42du@163.com') = true;
pattern.test('ifat3@sina.com.cn') = true;
pattern.test('ifat3.it@163. com') = true;
pattern.test('ifat3_-.@42du.cn') = true;
pattern.test('ifat3@42du.online') = false;
pattern.test ('毛三胖@42du.cn') = false;
pattern.test('cn42du@163.com') = true;
pattern.test('ifat3@sina.com.cn') = true;
pattern.test('ifat3.it@163.com') = true;
pattern.test('ifat3_-.@42du.cn') = true;
pattern.test(' ifat3@42du.online') = false;
pattern.test('毛三胖@42du.cn') = false;

方案1說明

方案1是最常用的郵件正規表示式驗證方案,也適合大多數的應用程式場景。從以上測試可以看出,此表達式不支援.online及.store結尾的網域名稱。如需相容這類網域名稱(大於4位元),調整正規結尾{2,4}的限制部分即可(例:{2,8})。另一個問題是郵件使用者名稱不能包括中文。

方案2 (修訂方案1)

規則補充如下:

  • 使用者名稱可以包含中文[\u4e00- \u9fa5]

  • 網域結尾最長可為8位元{2,8}

  • 更新後的正規表示式如下:

var pattern = /^([A-Za-z0-9_\-\.\u4e00-\u9fa5])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,8})$/;
登入後複製

完整測試程式碼

<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
  <title>邮箱/邮件地址的正则表达式及分析(JavaScript,email,regex)</title>
</head>
<body>
<p id="main"></p>
<script>
  var pattern = /^([A-Za-z0-9_\-\.\u4e00-\u9fa5])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,8})$/;
  w("pattern.test('cn42du@163.com') = "+pattern.test('cn42du@163.com')+";");
  w("pattern.test('ifat3@sina.com.cn') = "+pattern.test('ifat3@sina.com.cn')+";");
  w("pattern.test('ifat3.it@163.com') = "+pattern.test('ifat3.it@163.com')+";");
  w("pattern.test('ifat3_-.@42du.cn') = "+pattern.test('ifat3_-.@42du.cn')+";");
  w("pattern.test('ifat3@42du.online') = "+pattern.test('ifat3@42du.online')+";");
  w("pattern.test('毛三胖@42du.cn') = "+pattern.test('毛三胖@42du.cn')+";");
  function w(val) {
    document.getElementById("main").innerHTML += val +"<br />";
  }
</script>
</body>
</html>
登入後複製

測試結果:

pattern.test('cn42du@163.com') = true;
pattern.test('ifat3@sina.com.cn') = true;
pattern.test('ifat3.it@163.com') = true;
pattern.test('ifat3_-.@ 42du.cn') = true;
pattern.test('ifat3@42du.online') = true;
pattern.test('毛三胖@42du.cn') = true;

方案3 (安全)

在手機驗證碼出現之前,差不多信箱驗證是保證使用者唯一性的唯一條件。而臨時郵箱(也稱為10分鐘郵箱或一次性郵箱)的出現,則使得郵箱驗證及帳戶啟動這種機制失去了意義。而臨時郵箱的地址是不可枚舉的,我們只能才採取白名單的方式,只允許有限的郵箱域名通過驗證。

依方案1的補充如下規則:

郵件網域只能是163.com,qq.com或42du.cn。
給出正規表示式如下:

var pattern = /^([A-Za-z0-9_\-\.])+\@(163.com|qq.com|42du.cn)$/;
登入後複製

完整測試程式碼

<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
  <title>邮箱/邮件地址的正则表达式及分析(JavaScript,email,regex)</title>
</head>
<body>
<p id="main"></p>
<script>
  var pattern = /^([A-Za-z0-9_\-\.])+\@(163.com|qq.com|42du.cn)$/;
  w("pattern.test('cn42du@163.com') = "+pattern.test('cn42du@163.com')+";");
  w("pattern.test('ifat3@sina.com.cn') = "+pattern.test('ifat3@sina.com.cn')+";");
  w("pattern.test('ifat3.it@163.com') = "+pattern.test('ifat3.it@163.com')+";");
  w("pattern.test('ifat3_-.@42du.cn') = "+pattern.test('ifat3_-.@42du.cn')+";");
  w("pattern.test('ifat3@42du.online') = "+pattern.test('ifat3@42du.online')+";");
  w("pattern.test('毛三胖dd@42du.cn') = "+pattern.test('毛三胖@42du.cn')+";");
  function w(val) {
    document.getElementById("main").innerHTML += val +"<br />";
  }
</script>
</body>
</html>
登入後複製

測試結果:

pattern.test('cn42du@163.com') = true;
pattern.test('ifat3@sina.com.cn') = false;
pattern.test('ifat3.it@163.com') = true;
pattern.test('ifat3_-.@42du.cn') = true;
pattern.test('ifat3@42du.online') = false;
pattern.test('毛三胖dd@42du.cn') = false;
登入後複製

方案3驗證雖然能保證安全性,但如果白名單太長會造成模式字串太長。這時可以將信箱網域白名單寫成數組,利用正規表示式做初步驗證,用白名單做網域的二次驗證。

現給出郵箱驗證函數如下:

var isEmail = function (val) {
  var pattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
  var domains= ["qq.com","163.com","vip.163.com","263.net","yeah.net","sohu.com","sina.cn","sina.com","eyou.com","gmail.com","hotmail.com","42du.cn"];
  if(pattern.test(val)) {
    var domain = val.substring(val.indexOf("@")+1);
    for(var i = 0; i< domains.length; i++) {
      if(domain == domains[i]) {
        return true;
      }
    }
  }
  return false;
}
// 输出 true
isEmail(cn42du@163.com);
登入後複製

上述isEmail()函數列舉了常用的11種郵箱域名,大家可以根據需要適當補充或刪減。

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

axios中的302狀態碼

#封裝Vue2路由導航鉤子並在實戰中使用

以上是JS做出驗證郵箱/郵件地址正規的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

gate.io新手註冊教程 gate.io新手註冊教程 Mar 31, 2025 pm 11:09 PM

本文提供了一份詳細的Gate.io新手註冊教程,涵蓋了從訪問官網到完成註冊的每一個步驟,包括填寫註冊信息、進行驗證、閱讀用戶協議等。文章還強調了註冊成功後的安全措施,如設置二次驗證和完成實名認證,並給出了新手提示,幫助用戶安全地開啟數字資產交易之旅。

gate.io新手最新註冊教程 gate.io新手最新註冊教程 Mar 31, 2025 pm 11:12 PM

這篇文章為新手提供了詳細的Gate.io註冊教程,指導他們逐步完成註冊流程,包括訪問官網、填寫信息、身份驗證等,並強調了註冊後的安全設置。此外,文章還提到了幣安、歐易和芝麻開門等其他交易所,建議新手根據自身需求選擇合適的平台,並提醒讀者數字資產投資具有風險,應理性投資。

在Laravel中如何獲取郵件發送失敗時的退信代碼? 在Laravel中如何獲取郵件發送失敗時的退信代碼? Apr 01, 2025 pm 02:45 PM

Laravel郵件發送失敗時的退信代碼獲取方法在使用Laravel開發應用時,經常會遇到需要發送驗證碼的情況。而在實�...

在 Laravel 中,如何處理郵件發送驗證碼失敗的情況? 在 Laravel 中,如何處理郵件發送驗證碼失敗的情況? Mar 31, 2025 pm 11:48 PM

Laravel郵件發送驗證碼失敗時的處理方法在使用Laravel...

gate.io網頁版最新註冊教程 gate.io網頁版最新註冊教程 Mar 31, 2025 pm 11:15 PM

本文提供了一份詳細的Gate.io網頁版最新註冊教程,幫助用戶輕鬆入門數字資產交易。教程涵蓋了從訪問官網到完成註冊的各個步驟,並強調了註冊後的安全設置。文章還簡單介紹了幣安、歐易和芝麻開門等其他交易平台,建議用戶根據自身需求選擇合適的平台,並註意投資風險。

歐易官方網站最新註冊入口 歐易官方網站最新註冊入口 Mar 21, 2025 pm 05:54 PM

歐易OKX作為全球領先的數字資產交易平台,以其豐富的交易產品、強大的安全保障和便捷的用戶體驗吸引眾多投資者。然而,網絡安全風險日益嚴峻,如何安全註冊歐易OKX官方賬戶至關重要。本文將提供歐易OKX官方網站最新註冊入口,並詳細講解安全註冊的步驟和注意事項,包括如何識別官方網站、設置強密碼、開啟雙重驗證等,幫助您安全便捷地開啟數字資產投資之旅。請注意,數字資產投資存在風險,請謹慎決策。

歐易okex賬號怎麼註冊、使用、註銷教程 歐易okex賬號怎麼註冊、使用、註銷教程 Mar 31, 2025 pm 04:21 PM

本文詳細介紹了歐易OKEx賬號的註冊、使用和註銷流程。註冊需下載APP,輸入手機號或郵箱註冊,完成實名認證。使用方面涵蓋登錄、充值提現、交易以及安全設置等操作步驟。而註銷賬號則需要聯繫歐易OKEx客服,提供必要信息並等待處理,最終獲得賬號註銷確認。 通過本文,用戶可以輕鬆掌握歐易OKEx賬號的完整生命週期管理,安全便捷地進行數字資產交易。

幣安binance電腦版入口幣安binance電腦版pc官網登錄入口 幣安binance電腦版入口幣安binance電腦版pc官網登錄入口 Mar 31, 2025 pm 04:36 PM

本文提供Binance幣安電腦版登錄與註冊的完整指南。首先,詳細講解了幣安電腦版登錄步驟:在瀏覽器搜索“幣安官網”,點擊登錄按鈕,輸入郵箱和密碼(啟用2FA需輸入驗證碼)即可登錄。其次,文章闡述了註冊流程:點擊“註冊”按鈕,填寫郵箱地址,設置強密碼,驗證郵箱即可完成註冊。最後,文章還特別強調了賬戶安全,提醒用戶注意官方域名、網絡環境以及定期更新密碼,確保賬戶安全,更好地使用幣安電腦版提供的各項功能,例如查看行情、進行交易和管理資產。

See all articles