A [^\s] matches any char but a whitespace while you want to allow only letters and spaces.
Use
^[a-zA-Z][a-zA-Z\s]*$
NOTE: to also "allow" (=match) any printable ASCII chars other than space, letters and digits you may add [!-\/:-@[-{-~]` to the regex (please refer to this answer of mine):
^[a-zA-Z][a-zA-Z\s!-\/:-@[-`{-~]*$
See the regex demo and a regex graph:

Or, if an empty string should be matched, too:
^(?:[a-zA-Z][a-zA-Z\s]*)?$
Note that to include a hyphen to the character class, it is much safer (and more portable) to place it at the start/end of the character class, i.e. use [a-zA-Z-] instead of [a-z-A-Z].
Details
^ - start of a string
[a-zA-Z] - an ASCII letter
[a-zA-Z\s]* - 0 or more ASCII letters or whitespaces
$ - end of string.
(?:...)? is an optional non-capturing group that matches its pattern 1 or 0 times.