У меня есть регулярное выражение, которое хорошо сочетается со всеми моими правилами, за исключением того, что оно не может проверять адреса электронной почты с менее чем 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})$
Например, он считает, что [email protected] и [email protected] недействительны.
Regex можно найти здесь https://regex101.com/r/XcXIaL/1
Может ли кто-нибудь предложить модификацию этого существующего регулярного выражения
Он должен принять
[email protected]
[email protected]
[email protected]
В вашем регулярном выражении есть 3 подгруппы, каждая из которых должна соответствовать как минимум одному символу, ни один из которых не является обязательным. Это означает, что вам нужно как минимум 3 символа для совпадения.
Здесь мы просто уменьшаем границу {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})$
Наше модифицированное выражение:
Это разрешает [email protected], но по-прежнему отклоняет [email protected]. Я хочу, чтобы мой rejegex также принимал [email protected].
Итак, @ user2990342 - теперь, когда у вас есть решение, вы понимаете, что было не так с вашим оригинальным RE? Эмма, вы на самом деле ответили на вопрос или ответили на просьбу предоставить код?
Пожалуйста, покажите свое регулярное выражение в самом вопросе. Ссылка должна быть только дополнительным ресурсом.