Задать вопрос
@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
        }


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

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

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

Похожие вопросы
25 дек. 2024, в 10:26
4000 руб./за проект
25 дек. 2024, в 10:09
15000 руб./за проект
25 дек. 2024, в 09:50
15000 руб./за проект