Need best grep option or alternative

Hello,
I am processing a text file which contains only words with few combination of characters (it is a dictionary file).
example:
havana
have
haven
haven't
havilland
havoc
Is there a way to exclude only 1 to 8 character long words which not include space or special characters : '-`~.. so on?
The way I remember I've used long ago for length filter was grep "^[a-z]$" grep "^[a-z][a-z]$" grep "^[a-z][a-z][a-z]$" and so on.. but there should be some easier option?

^[a-z]{8}$ # lowercase exact 8 occurrence.
^[a-zA-Z]{8}$ # including lower and upper.

Thank you. I tried and it work, but i still need to execute grep command 8 times and combine results after eg:egrep "^[a-z]{1}$" words ..egrep "^[a-z]{2}$" words . There is no way only one command do the job?

You might try this...

egrep "^[a-z]{1,8}$" infile

thank you!
this do the job and is fast! just a final hint
how to add numbers to regexp ?
^[1-8a-z]{1,8}$ ?
I tried but it not work that way

---------- Post updated at 03:58 AM ---------- Previous update was at 03:42 AM ----------

ok i handle it.. [[:alnum:]] do the job
thanks for both of you!

egrep "^[0-9a-z]{1,8}$" infile