Это ваше исходное выражение, измененное таким образом, чтобы разрешить несколько писем, разделенных точкой с запятой и (необязательно) пробелами, кроме точки с запятой.Это также позволяет использовать один адрес электронной почты, который не заканчивается точкой с запятой.
Это позволяет вводить пустые записи (без адресов электронной почты).Вы можете изменить окончательный * на +, чтобы указать хотя бы один адрес.
(([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)(\s*;\s*|\s*$))*
Если вам нужно разрешить запятую, кроме точки с запятой, вы можете изменить эту группу:
(\s*;\s*|\s*$)
по этому:
(\s*(;|,)\s*|\s*$)
Важное примечание: как говорится в комментарии Мартина, если есть дополнительный текст до или после правильного списка адресов электронной почты, проверка не завершится неудачей.Так что это будет работать как «поисковик электронной почты».Чтобы он работал как валидатор, вам нужно добавить ^
в начале регулярного выражения и $
в конце.Это гарантирует, что выражение соответствует всему тексту.Таким образом, полный reex будет:
^(([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)(\s*;\s*|\s*$))*$
Вы можете добавить дополнительный \s*
после ^
, чтобы допустить пробелы в начале списка, как это.То есть включите ^\s*
вместо простого ^
Выражение уже допускает пробелы в конце как есть.