簡體   English   中英

驗證電子郵件正則表達式

[英]Validate regex of email

我有一個收件人文本框,可以輸入電子郵件地址並發送給該人。如您所知,有人輸入電子郵件時要考慮正則表達式。 例如,沒有@的電子郵件不是有效的電子郵件。

因此,我編寫了一個函數來檢查電子郵件的正則表達式,如下所示:

//check email address
    function validateEmail(email) {
        var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
        return re.test(email);
    }

因此,如果我寫test@hotmail.com那么這將是有效的,而test@@@hotmail.com將是無效的。 是的,這沒有問題。 但是,我可以在我的文本框中以這種形式發送給多個收件人:

test@hotmail.com,test123@hotmail.com,....

因此,如果我輸入上面的內容,它將被視為無效,但是看到我的正則表達式表達式不好,是否有辦法讓它通過?

編輯:

正則表達式如下所示:

var re = /(?:^|,)((([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))(?:$|(?=,)))/;

在模式的開始,增加對非捕獲組,或者字符串的開頭:

(?:^|,)

並且在圖案的端部,添加非捕獲組的字符串,或者為先行的端部,

(?:$|(?=,))

如果用逗號隔開,則允許在一行上進行多個匹配。

(?:^|,)(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))(?:$|(?=,))
^^^^^^^                                                                                                                                                       ^^^^^^^^^^^

https://regex101.com/r/Dzyfqt/1

如果您不僅要驗證電子郵件,還要提取電子郵件,則有時會包含一個前導逗號,這可能是不希望的-要解決此問題,請將所有內容括在最初的非捕獲組之后,再放入另一個組:

(?:^|,)((([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))(?:$|(?=,)))

並且僅電子郵件地址將位於第一個捕獲的組中。

如果要檢查字符串是否包含逗號分隔的電子郵件地址,而除了逗號分隔的電子郵件地址,則可以使用第一個模式,並將每個匹配的電子郵件替換為空字符串,並檢查是否最后一個結果字符串為空:

 function validateEmail(email) { var re = /(?:^|,)(([^<>()[\\]\\\\.,;:\\s@\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\"]+)*)|(\\".+\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))(?:$|(?=,))/g; return email.replace(re, '') === ''; } console.log(validateEmail('test@hotmail.com,test123@hotmail.com')); 

請檢查以下代碼:

 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> </head> <script> function sendmessage(){ var recipient = document.getElementById("recipient").value; var result=validateEmails(recipient); alert(result); } function validateEmails(emailString) { var regex = /^([\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4})?$/; var result = emailString.replace(/\\s/g, "").split(/,|;/); for(var i = 0;i < result.length;i++) { if(!regex.test(result[i])) { return false; } } return true; } </script> <body> &emsp;&emsp; To:<input type="email" style="font-size: 10pt;" size="70" id="recipient"><br><br> <div class="Send"> <button type="button" style="font: 13px/1.231 Trebuchet MS;" onclick="sendmessage()"> Send </button> </div> </body> </html> 

暫無
暫無

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

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