簡體   English   中英

電子郵件的Javascript正則表達式,允許在電子郵件中使用“ \\”

[英]Javascript regex for email allowing '\' in email

我的電子郵件有一個正則表達式:

const EMAIL = /^(([^<>()\[\].,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;

我想驗證以下電子郵件為真:

Fred\ Bloggs@example.com true
Joe.\\Blow@example.com true
""test\\blah""@example.com true

在電子郵件下方為false:“” test \\ blah“” @ example.com

目前,我無法執行此驗證,請幫助

 function validateEmail(email) { var re = /(([^<>()\\[\\].,;:\\s@\\"]+(\\.[^<>()\\[\\]\\.,;:\\s@\\"]+)*)|(\\".+\\"))@(([^<>()[\\]\\.,;:\\s@\\"]+\\.)+[^<>()[\\]\\.,;:\\s@\\"]{2,})$/i; return re.test(String(email).toLowerCase()); } var test_email1 ='""test\\blah""@example.com"'; alert(validateEmail(test_email1)); var test_email2 ='Fred\\ Bloggs@example.com'; alert(validateEmail(test_email2)); var test_email3 ='Joe.\\\\Blow@example.com'; alert(validateEmail(test_email3)); var test_email4 ='""test\\\\blah""@example.com'; alert(validateEmail(test_email4)); 

這是Omid使用符合RFC 2822的正則表達式回答的功能。

function validateEmail(email) {
    var re = /(?:[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])+)\])/;
    return re.test(String(email).toLowerCase());
}

console.log(validateEmail('Fred\ Bloggs@example.com')); // logs true
console.log(validateEmail('Joe.\\Blow@example.com')); // logs true
console.log(validateEmail('""test\\blah""@example.com')); // logs true

您會注意到,如果您要失敗,此函數不會返回false

真正測試電子郵件地址的唯一方法是向其發送電子郵件-不要依靠正則表達式來驗證電子郵件地址,因為您的正則表達式永遠不會完美。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM