Мне нужно регулярное выражение для сопоставления нескольких адресов электронной почты, разделенных пробелами и/или пунктами. Адреса электронной почты находятся в строке. Я пробую это, но он не работает
^(\s[[:punct:]])*([a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,6}){1}(\s[[:punct:]])*$
Текст может выглядеть так:
Или даже как это
Lorem ipsum dolor sit [email protected] amet, consectetur, [email protected], adipiscing elit. Vestibulum consectetur fringilla mi ac dignissim. Nulla at est quam. [email protected] Sed enim.
вы можете заменить якоря ^ и $ на то, что не заставляет электронное письмо быть первым и последним в строке...
как \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} ограничивал количество писем, которые вы могли бы сопоставлять между ^ и $
,
; затем используйте php.net/manual/en/function.filter-var.php