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

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

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

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

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

Или даже так

Lorem Ipsum Dolor Sit [email protected] Amet, Concectetur, [email protected], Adipiscing Elit. Vestibulum concectetur fringilla mi ac dignissim. Nulla в Est Quam. [email protected] 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

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

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

По вопросам рекламы [email protected]