Регулярное выражение для соответствия любому адресу электронной почты: \w+@\w+\.\w{3}
.
Затем (после того, как это регулярное выражение только что совпадало), вы можете использовать отрицательный взгляд за дляисключить «запрещенный» адрес, например, (?<!particularperson@anotherdomain\.com)
.
Таким образом, все регулярные выражения могут быть:
\w+@\w+\.\w{3}(?<!particularperson@anotherdomain\.com)
Конечно, не ясно, поддерживает ли ваш вариант регулярных выражений отрицательные взгляды.(например, JavaScript этого не делает), но вы его не указали.
Примечание. Нельзя использовать отрицательный прогноз для запрещенного адреса, а затем использовать регулярное выражение для сопоставления с любым адресом.Причина в том, что после совпадения с отрицательным прогнозом (находящим запрещенный адрес) процессор регулярных выражений перемещает один символ вперед и, начиная следующую попытку с этого места, этот тупик не будет совпадать.Поэтому регулярное выражение для совпадения с любым адресом будет соответствовать запрещенному адресу без указания только первого символа.
Редактировать
Если у вас есть переменная последняя часть (.co
, .com
и другие), попробуйтенемного другой подход.
Вы не можете написать, например, .com?
в lookbehind, потому что он не допускает переменную длину шаблона.
Вместо этого вы можете поставить отрицательный lookbehind передпоследняя часть (что бы это ни было) и проверьте только на particularperson
и anotherdomain
(плюс @
и .
в нужных местах).
Еще два дополнения:
- После того, что вы уже сделали, не должно быть ни точки, ни слова char, поэтому последняя часть должна быть
(?!\.\w)
. - Аналогично, все регулярное выражение должно начинаться с
\b
, чтобы начать с слова boudary
Таким образом, исправленное регулярное выражение может быть:
\b\w+@\w+\.(?<!particularperson@anotherdomain\.)\w{2,3}(?!\.\w)