RegEx для проверки писем с однобуквенными доменами - PullRequest
0 голосов
/ 28 мая 2019

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

^(?=(.{1,64}@.{1,255}))([-+%_a-zA-Z0-9]{1,64}(\.[-+%_a-zA-Z0-9][^.]{0,}){0,})@[^-\.@#!$&^*~`={}|'"?]([a-zA-Z0-9_]{1,63}(\.[a-zA-Z0-9-]{0,}){0,}[^.](?!.web)(\.[a-zA-Z]{2,6}){1,4})$

Например, он считает sample@q.com и sample@me.com недействительными электронными письмами

Regex можно найти здесь https://regex101.com/r/XcXIaL/1

Может ли кто-нибудь предложить модификацию этого существующего регулярного выражения

Следует принять

sample@q.com
sample@me.com
sample@mes.com

1 Ответ

0 голосов
/ 28 мая 2019

Здесь мы просто уменьшаем границу {1,63} до {0,63} и удаляем эту ненужную букву:

[^-\.@#!$&^*~`={}|'"?]

Ключевая часть нашего кода, связанная с этим:

[^-\.@#!$&^*~`={}|'"?]([a-zA-Z0-9_]{1,63}(\.[a-zA-Z0-9-]{0,}){0,}[^.](?!.web)

изменено на:

([a-zA-Z0-9_]{1,63}(\.[a-zA-Z0-9-]{0,}){0,}[^.](?!.web)

и окончательный код:

^(?=(.{1,64}@.{1,255}))([-+%_a-zA-Z0-9]{1,64}(\.[-+%_a-zA-Z0-9][^.]{0,}){0,})@([a-zA-Z0-9_]{0,63}(\.[a-zA-Z0-9-]{0,}){0,}[^.](?!.web)(\.[a-zA-Z]{2,6}){1,4})$

DEMO

Наше модифицированное выражение:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...