Regex для сопоставления нескольких писем, разделенных пробелами или пунктами

Мне нужно регулярное выражение для сопоставления нескольких адресов электронной почты, разделенных пробелами и / или пунктами. Адреса электронной почты в строку. Я пытаюсь это, но это не работает

^(\s[[:punct:]])*([a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,6}){1}(\s[[:punct:]])*$

Текст может быть таким:

abcd@abcd.ef, abcd@abcd.ef abcd@abcd.ef

Или даже так

Lorem Ipsum Dolor Sit abcd@abcd.ef Amet, Concectetur, abcd@abcd.ef, Adipiscing Elit. Vestibulum concectetur fringilla mi ac dignissim. Nulla в Est Quam. abcd@abcd.ef Sed enim.

0

Решение

Вы можете заменить якоря ^ и $ чем-то, что не заставляет письмо быть первым и последним в строке …

как \ b (слово ограничено)

\b(\s[[:punct:]])*([a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,6}){1}(\s[[:punct:]])*\b

или вообще ничего?

(\s[[:punct:]])*([a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,6}){1}(\s[[:punct:]])*

http://rubular.com/r/AMnr2kzp09

или просто

(\b[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,6}\b)

так как {1} ограничивал количество писем, которые вы можете сопоставить между ^ и $

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector