@GNG999

Как проверить соответствует ли value of input формату «фамилия имя отчество »?

Дан инпут в реакт компоненте нужно что бы при сабмите была проверка на то, что значение инпута соответствует формату "фамилия имя отчество", при этом при onChange мы ничего не делаем (просто обработчик setState(e.target.value)), те пользователь может ввести длинные пробелы после слов и в конце
На данный момент я сделал вот так

const withoutSpaces = name.replace(/\s+/g, " ").split(" ")
        const isLastSpace = withoutSpaces[withoutSpaces.length - 1] === ""
        const validLength = (isLastSpace && withoutSpaces.length === 4) || (!isLastSpace && withoutSpaces.length === 3)
        if (!validLength) {
            errorDispatching('Введите фамилию, имя, отчество')
            return
        }


Есть ли более простое решение ?
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
Elaryks
@Elaryks
Можно сразу удалить в строке лишние пробелы в начале и конце, после чего разбить её по пробелам:

const nameParts = name.trim().split(/\s+/);
if (nameParts.length !== 3) {
    errorDispatching('Введите фамилию, имя, отчество');
    return;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы