Regex for a string with at least a letter and no repeating dash
The lookahead (?=[a-z0-9-]*[a-z][a-z0-9-]*) can be reduce to:

(?=.*[a-z])


because the allowed characters are defined after in the non capturing group.

The dash [-] doesn't need to be inside a character class, - is enough

Then, the whole regex becomes:

^(?=.*[a-z])(?:[a-z0-9]|-(?!-)){1,10}$