首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

JavaScript 正則表達式驗證 Email 完整指南

     編輯:Java 相關知識

Email 格式規則拆解

  • 本地部份(@ 前):字母、數字、._-,不可以特殊字元開頭/結尾
  • 域名部份(@ 後):子域名 + 頂級域,至少一個點,TLD 2~5 字母
  • 常見合法範例:user.name@domain.com、user_name@sub.domain.cn、user-name@domain.co.uk

推薦正則(平衡嚴謹與通用)

const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;

說明:

  • ^[a-zA-Z0-9._%+-]+:本地部份,允許常見特殊字元
  • @:必須單一 @
  • [a-zA-Z0-9.-]+:域名標籤(含子域名)
  • \.[a-zA-Z]{2,}$:頂級域至少 2 字母

完整驗證函式

function isValidEmail(email) {
    if (typeof email !== 'string') return false;
    const regex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
    return regex.test(email.trim());
}

// 測試
['test@hotmail.com', 'user@sub.domain.cn', 'invalid@', '@domain.com', 'user@domain'].forEach(e => 
    console.log(e, '→', isValidEmail(e))
);

進階:RFC 5322 完整規範(不建議生產直接使用)

// 過於複雜,僅供參考
const rfc5322Regex = /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/i;

最佳實踐建議

  1. 前端用簡易正則快速攔截明顯錯誤
  2. 後端必須再次驗證(正則或郵件發送驗證碼)
  3. 不建議過度嚴格導致合法郵箱被拒(如 + 號、長 TLD)
  4. 國際化郵箱(含 Unicode)需支援 IDN 轉碼
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved