^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$
Пытаюсь сделать ограничение {4,40} так:
^((([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])){4,40}$
Она срабатывает на "aaaa", но не срабатывает на "ya.ru", но срабатывает на "yay.ru" или "ya.rur". Также, почему-то не срабатывает ограничение в 40 символов.
Почему так происходит?