Regex Negative Lookahead работает не так, как ожидалось - PullRequest
0 голосов
/ 19 марта 2019

Я работаю над проверкой электронной почты, которая позволит добавлять адреса электронной почты, если они не получены из определенных ДВУ. Проблема в том, что мой Regex ведет себя не так, как я ожидал. Я хочу, чтобы он удостоверился в том, что электронное письмо является действительным и не имеет какого-либо ДВУ, например, я хочу "johndoe@domain.com", но я не хочу, чтобы "johndoe@domain.xyz" где во втором примере, Я запрещаю добавление TLD из электронных писем «xyz». Вот мой текущий Regex:

^[a-zA-Z0-9]+[a-zA-Z0-9._%-]*@.*\.(?!xyz)$

Проблема в том, куда направится ДВУ, он вообще не будет ничего соответствовать. Он не будет соответствовать xyz, что не должно, но он также не будет соответствовать org, com, net или любому другому TLD. Я не слишком продвинут, когда дело доходит до Regex, но я думал, что Negative Lookahead будет блокировать только строку, которая идет после него, а не НИЧЕГО, что идет после него.

Любая помощь приветствуется.

1 Ответ

2 голосов
/ 19 марта 2019

Используя отрицательный взгляд, вы говорите регулярному выражению, что оно не соответствует xyz (?!xyz), но вы не говорите ему, что сопоставлять.

Если вы хотите сопоставить что-либо еще, вы можете просто добавить .* после вашего (?!xyz):

^[a-zA-Z0-9]+[a-zA-Z0-9._%-]*@.*\.(?!xyz).*$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...