Здесь мы просто уменьшаем границу {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})$
Наше модифицированное выражение: