簡體   English   中英

正則表達式逗號分隔的電子郵件

[英]Regex Comma Separated Emails

我正在嘗試使此 Regex 語句起作用

^([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[az]{2,3})+(\s?[,]\s?|$))+$

使用jQuery('#textbox').val(); textbox輸入一串逗號分隔的電子郵件; 它將值傳遞給 Regex 語句以查找字符串的錯誤,例如:

"test@test.com, test1@test.com,test2@test.com"

但由於某種原因,它返回一個錯誤。 我嘗試通過http://regexpal.com/運行它,但我不確定?

注意:這只是一個基本的客戶端測試。 我使用MailClass通過服務器端的 MailClass 驗證電子郵件 - 所以不要重蹈覆轍。 這里的目的是消除簡單的錯誤。

轉義版本:

^([_a-z0-9-]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[az]{2,3})+(\\s?[,]\\s?|$))+$

正如 Pablo 所說,您可以先用逗號分隔,然后重復應用正則表達式來驗證每封電子郵件,從而大大簡化事情。 然后,您還可以指出不好的地方——但有一個很大的警告。

查看文章比較電子郵件地址驗證正則表達式中的正則表達式 我剛才找不到另一個更好的正則表達式,但關鍵是檢查電子郵件的正確正則表達式非常復雜,因為 RFC 中指定的有效電子郵件地址的規則非常復雜。

在你的,這部分(\.[az]{2,3})+向我跳了出來; 兩個或三個字母的組{2,3}我經常看到嘗試驗證頂級域,但是(1)您的正則表達式允許這些組中的一個或多個,並且(2)您將排除有效的電子郵件來自.info.museum等域的地址(許多網站拒絕我的.us地址,因為他們認為只有 3 個字母的域是合法的。)

我的建議是拒絕嚴重無效的地址,同時將最終驗證留給服務器,基本上是允許 (anything)@(anything).(anything) - 只檢查“at”和“dot”,當然還有允許多個點。

編輯:“簡單”正則表達式的示例

[^@]+@[^.]+(\.[^.]+)+

這匹配

  • test@test.com
  • test1@test.com
  • test2@test.com
  • foo@bar.baz.co.uk
  • 我的名字@modern.museum

並且不匹配foo@this....that

注意:即使這樣也會拒絕一些有效的電子郵件地址,因為@左邊的任何東西都是允許的 - 甚至是另一個@ - 如果它全部正確轉義。 但在現實生活中使用電子郵件的 25 年里,我從未見過這種情況。

暫無
暫無

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

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