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


Есть ли более простое решение ?
  • Вопрос задан
  • 121 просмотр
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
Решения вопроса 1
Elaryks
@Elaryks
Можно сразу удалить в строке лишние пробелы в начале и конце, после чего разбить её по пробелам:

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

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

Похожие вопросы