2016-03-17 20 views
0

表達我有一個正則表達式象下面這樣:經常用於多個電子郵件地址

^[A-Za-z0-9\.|-|_]*[@]{1}[A-Za-z0-9\.|-|_]*[.]{1}[a-z]{2,5}$ 

從上述正則表達式:
(1)[email protected] ==>有效
(2)B @gmail。               ==>無效
(3)C @的Gmail               ==>無效

上述正則表達式是隻對單一的電子郵件地址。

但現在,我要象下面這樣:
(1)[email protected]                                                   ==>有效
(2)a @ gmail.com,b @ gmail.com   ==>有效
(3)C @ gmail的,ð@ gmail.com                   ==>無效

的電子郵件地址應該是全格式無論有多少個電子郵件用戶填寫。
我應該如何修改它?有人能幫我嗎?

+1

['^ [A-ZA-Z0-9 ._-] * @ [A-ZA-z0- 9 ._-] * [] [A-ZA-Z] {2,5-}(\ S * [A-ZA-Z0-9 ._-] * @ [A-ZA-z0-9._ - ] * [。] [a-zA-Z] {2,5})* $'](https://regex101.com/r/dC7bN3/1) –

+0

您的驗證可能會將一些有效的電子郵件地址標記爲無效。 (例如,應在'@'前面加上'+'字符。[相關閱讀](http://www.regular-expressions.info/email.html) –

+2

您應該[停止使用正則表達式驗證電子郵件地址] (https://開頭davidcel。是/ posts/stop-validating-email-addresses-with-regex /) –

回答

2

使用此:

^([A-Za-z0-9\.|-|_]*[@]{1}[A-Za-z0-9\.|-|_]*[.]{1}[a-z]{2,5})(,[A-Za-z0-9\.|-|_]*[@]{1}[A-Za-z0-9\.|-|_]*[.]{1}[a-z]{2,5})*?$ 

,第一部分將選擇一個電子郵件地址:

([A-Za-z0-9\.|-|_]*[@]{1}[A-Za-z0-9\.|-|_]*[.]{1}[a-z]{2,5}) 

然後第二部分是類似的,但是它必須用逗號(,)開始,和整個部分是可選的(?

(,[A-Za-z0-9\.|-|_]*[@]{1}[A-Za-z0-9\.|-|_]*[.]{1}[a-z]{2,5})*? 

結帳this demo on RegExr


感謝@Wiktor Stribiżew指出我以前的正則表達式允許尾隨,

+3

這也將允許在'a @ gmail.com,b @ gmail.com,' –

+0

中跟蹤','我不知道你是否注意到了,但模式中的'| - |'永遠不會匹配連字符,我相信OP想匹配一個連字符。此外,最後的'?'量詞在輸入時只允許輸入2封電子郵件,而問題指出*不管有多少電子郵件用戶填寫*。 –

+0

我在第二部分後面添加了一個'*',在'?'之前,允許無限數量的電子郵件地址。由於OP已經有了表達,我改變了它做他想做的事,但我也會告訴他連字符的東西。 – Druzion

相關問題