Я думаю, вы ищете что-то вроде этого:
^(?=[A-Za-z])[A-Za-z\.\-']{0,79}[A-Za-z']$
Объяснить:
^(?=[A-Za-z])
: убедитесь, что строка начинается с символа слова. Это предварительное утверждение, поэтому оно НЕ будет участвовать в матче. Остальная часть шаблона должна по-прежнему содержать не менее 1 и не более 80 символов.
[A-Za-z\.\-']{0,79}
: первый и средний символы, следовательно, максимум 79 символов. Минимум один применяется с последним символом.
[A-Za-z']$
: заканчивается буквой или апострофом.
Тестируется здесь: https://regex101.com/r/AOQojT/1