2016-03-17 5 views
0

У меня есть регулярное выражение, как показано ниже:Регулярное выражение для множественного адреса электронной почты

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

Из выше регулярного выражения:
(1) [email protected] ==> действительный
(2) б @gmail.               ==> недействительным
(3) с @ gmail.com               ==> недействителен

выше регулярное выражение только для одного адреса электронной почты.

Но теперь, я хочу, как показано ниже:
(1) [email protected]                                                   ==> действительный
(2) a @ gmail.com, b @ gmail.com   ==> действительный
(3) с @ gmail.com, d @ 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 за указание моего предыдущего RegEx позволил завершающей ,

+3

Это также позволит использовать trailing ',' как в 'a @ gmail.com, b @ gmail.com,' –

+0

. Я не знаю, заметили ли вы, но '| - |' в шаблоне никогда не будет соответствовать дефис, и я считаю, что OP хочет сопоставить дефис. Кроме того, квантификатор '?' В конце допускает только 2 письма во входном сигнале, в то время как в вопросе указывается * независимо от того, сколько заполняет пользователь электронной почты *. –

+0

Я добавил '*' после второй части, перед символом '?', Чтобы разрешить неограниченное количество адресов электронной почты. Поскольку у ОП уже было выражение, я изменил его, чтобы делать то, что он хотел, хотя я также сообщу ему о дефисной вещи. – Druzion

Смежные вопросы