You may use
^[a-zA-Z][a-zA-Z]*(?:(?: & |[-' ])[a-zA-Z][a-zA-Z]*)*$
^^^^^^^^^^^^^
See the regex demo
The non-capturing group (?: & |[-' ])
matches either a space, &
, space or a -
, '
or a single space. Non-capturing groups are used when the text they match won't be accessed after the match is found, so, in this case, all groups should be non-capturing: (?: & |[-' ])
groups two alternatives with the |
alternation operator and (?:(?: & |[-' ])[a-zA-Z][a-zA-Z]*)
groups a quantified sequence of patterns.
If you mean to match any whitespace, replace the literal spaces in the pattern with \s
.