A [^\s]
соответствует любому символу, кроме пробела, в то время как вы хотите разрешить только буквы и пробелы.
Используйте
^[a-zA-Z][a-zA-Z\s]*$
ПРИМЕЧАНИЕ: также «разрешить» (= сопоставить) любые печатные символы ASCII, кроме пробела, букв и цифр, которые вы можете добавить [!-\/:-@[-
{- ~] `к регулярному выражению (см. этот мой ответ ):
^[a-zA-Z][a-zA-Z\s!-\/:-@[-`{-~]*$
См. Демонстрационную версию регулярных выражений и график регулярных выражений :
Или, если пустая строка тоже должна соответствовать:
^(?:[a-zA-Z][a-zA-Z\s]*)?$
Обратите внимание, что для добавления дефиса к классу символов гораздо безопаснее (и более переносимым) поместить его в начало / конец класса символов, т. Е. Использовать [a-zA-Z-]
вместо [a-z-A-Z]
.
Детали
^
- начало строки
[a-zA-Z]
- буква ASCII
[a-zA-Z\s]*
- 0 или более букв ASCII или пробелов
$
- конец строки.
(?:...)?
- необязательная группа без захвата, которая соответствует ее шаблону 1 или 0 раз.