2011-06-20 102 views
3

我試圖讓這個正則表達式語句工作正則表達式逗號分隔的電子郵件

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

爲逗號的字符串使用jQuery('#textbox').val();其傳遞值到正則表達式語句來找出錯誤的分離在textbox電子郵件一個字符串,如:

"[email protected], [email protected],[email protected]"

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

注:這僅僅是一個基本的客戶端測試。我使用.NET4.0在服務器端通過MailClass驗證電子郵件 - 所以不要再跳下我的喉嚨。這裏的目的是消除簡單的錯誤。

轉義版本:

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

+6

爲什麼不用split(',')'分割字符串,然後通過更簡單的正則表達式運行每封電子郵件? –

+0

@Pablo - 感謝您的回覆。只有'+(\ s?[,] \ s?| $)'與逗號分隔值有關 - 其​​餘部分是電子郵件驗證。即使我拆分電子郵件 - 我仍然會通過這個運行嗎? –

+0

你看到什麼錯誤? –

回答

2

可以大大第一剖開的逗號簡化的東西,如巴勃羅說,然後重複應用正則表達式來驗證每一個人電子郵件。你也可以指出那個不好的 - 但有一個很大的警告。

看看文章Comparing E-mail Address Validating Regular Expressions的正則表達式。還有另一個更好的正則表達式,我現在找不到,但重點是檢查電子郵件的正確的正則表達式非常複雜,因爲RFC中指定的有效電子郵件地址的規則非常複雜。

在你的,這部分(\.[a-z]{2,3})+我跳了出來;二或三 - 字母組{2,3}我經常看到作爲一種嘗試驗證頂級域名,但(1)您正則表達式允許這些羣體之一以上和(2)你會排除有效的電子郵件地址域,如.info.museum(很多網站拒絕我.us地址,因爲他們以爲只有3個字母的域名是合法的。)

我的建議,拒絕認真無效地址,同時使最終驗證服務器,是爲了讓基本上(任何東西)@(任何東西)(任何東西) - 只檢查「at」和「dot」,當然允許多個點。

編輯:示例 「簡單」 的正則表達式

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

這個匹配

而且不匹配[email protected]

注:即使這會拒絕一些有效的電子郵件地址,因爲什麼被允許在@的左 - 甚至是另一個@ - 如果這一切都正確轉義。但在真實生活中使用電子郵件25年以來,我從未見過這種情況。

+0

非常簡單:)所以我用了splitter,用這個簡單的版本進行驗證,並且在服務器端用ASP.NET進行驗證:)開心的日子! –

相關問題