Нужно регулярное выражение для редактирования действительных адресов электронной почты, но не те, которые начинаются с определенных слов, не может использовать обходные пути - PullRequest
0 голосов
/ 19 июня 2019

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

\b([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-\._]*[A-Za-z0-9])@(([A-Za-z0-9]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])\.)+([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])\b

Однако я хочу переписать это так, чтобы адреса электронной почты, начинающиеся с определенных слов (например, «blern»), приводили к тому, что адрес электронной почты не совпадал и, следовательно, не редактировался. Эти слова триггера могут появляться в виде префикса на адресе электронной почты (blernsoandso@gmail.com) или в качестве префикса с косой чертой (blern/soandso@gmail.com), и оба экземпляра должны обрабатываться регулярным выражением. Некоторые адреса электронной почты также могут иметь "." в адрес (blern/firstname.lastname@gmail.com), и они также должны быть обработаны правильно. Ранее я пытался рассмотреть все это с помощью взгляда назад и взглядом, как в следующем регулярном выражении:

(?<!(blern/|other/))(?!(blern|other))\b([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-\._]*[A-Za-z0-9])@(([A-Za-z0-9]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])\.)+([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])\b

Проблема в том, что ядром, на котором запущено это регулярное выражение, является RE2, а обходные пути не поддерживаются. Поэтому мне нужно выполнить все упомянутые мною пересмотры, не обращая внимания на будущее. У кого-нибудь есть понимание этого вопроса? Я также приму любые критические замечания относительно исходного регулярного выражения электронной почты, если у вас есть.

...