After some trial and reading, I found that one worked:
Pattern = string.Format("^(([A-Za-z]([A-Za-z0-9-]*[A-Za-z0-9])*\\.)*[A-Za-z]+){{{0},{1}}}$", minLength, maxLength);
No more explicit prohibition of character combinations and yet it works:
The last part (with "{{" and such) defines the allowed length.
Prior to that is the mandatory alpha-only part.
It can be preceded by no or many optional parts.
Within an optional part, there is one mandatory again. Which means "If there is something before the global mandatory part, there has to be an alpha and a period".
Between alpha and period there can be alphaNums. And between those alphaNums, if they exist, there can be alphaNumDashes.
And the problem regarding zero-length inputs is sorted out by placing the start
^
and end
$
at slightly different positions. That's something I don't understand the reasons for, but it tested Ok.