[英]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”,當然還有允許多個點。
編輯:“簡單”正則表達式的示例
[^@]+@[^.]+(\.[^.]+)+
這匹配
並且不匹配foo@this....that
注意:即使這樣也會拒絕一些有效的電子郵件地址,因為@
左邊的任何東西都是允許的 - 甚至是另一個@
- 如果它全部正確轉義。 但在現實生活中使用電子郵件的 25 年里,我從未見過這種情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.