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.