(?i)(?=.{5,20}$)^(([a-z\d]|[a-z\d][a-z\d\-]*[a-z\d])\.)*([a-z\d]|[a-z\d][a-z\d\-]*[a-z\d])$
Объяснение:
(?i)
- игнорировать регистр
(?=.{5,20}$)
- ограничить длину строки в пределах от 5 до 20 символов.
^(([a-z\d]|[a-z\d][a-z\d\-]*[a-z\d])\.)*([a-z\d]|[a-z\d][a-z\d\-]*[a-z\d])$
- принимает любые алфавиты и цифры вместе с дефисом и точкой