Your regular expression allow exactly one -. but I assume that you want to mach "Smith", "Smith-Kennedy", but not "Smith-", to do this you just must move the hyphen to the second group:
^[a-z A-Z]+(-[a-z A-Z]+)?$
BTW, in almost all cases when * is used + is the better solution.