Как при валидации оставить только один пробел между двух слов

У меня есть форма. В одном поле нужно ввести (имя и фамилия).
Мне нужно регулярное выражение которое оставит только один пробел между Именем и Фамилией.
Я кое-что сделал, но это работает не корректно.
Нужны только буквы один пробел по центру и больше ничего.

document.querySelector('#name').addEventListener('keyup', function() {
    this.value = this.value.replace(/^\s|[^A-Za-zА-Яа-яЁё][^A-Za-zА-Яа-яЁё]|\s$/, '');
});

^\s|[^A-Za-zА-Яа-яЁё][^A-Za-zА-Яа-яЁё]|\s$

Мой валидатор с ошибками он позволяет ввести в самом начале цифру и следом за ней букву.


Ответы (1 шт):

Автор решения: Bamberg
document.querySelector('#name').addEventListener('input', function() {
    this.value = this.value
        .replace(/\d/gm, '')
        .replace(/ {2,}/, ' ')
        .replace(/^ {1,}/, '')
        .replace(/[^A-Za-zА-Яа-яЁё\s]/, '')
        .replace(/^([A-Za-zА-Яа-яЁё]+) ([A-Za-zА-Яа-яЁё]+)( {1}|)/gm, '$1 $2');
});
→ Ссылка