После ввода первого пробела слово сплитится на массив с 1 элементом
const removeExtraSpaces = string => string.trim().replace(/\s{2,}/g, ' '); const removeNonCyrillicLetters = string => string.replace(/\w|d/gi, '') const capitalize = string => string.charAt(0).toUpperCase() + string.slice(1) const formatName = name => { const hasSpaceAtTheEnd = name.slice(-1) === ' ' const cleanString = removeNonCyrillicLetters(removeExtraSpaces(name)) let finalString = cleanString.split(' ').map(capitalize).join(' ') if(hasSpaceAtTheEnd) finalString+=' ' return finalString } document.querySelector('#name').oninput = event => event.target.value = formatName(event.target.value)
ну я просто не знаю, тогда куда е.таргет.валуе запихнуть
const formattedName = formatName(e.target.value)
ага
да, все работает)но как то уж очень сложно)
Наоборот, очень даже просто
str.replace(/[^а-яё ]/gi, '') должно быть получше.
Я его регулярку просто скоприровал
handleChange({...formData, name: formatName(e.target.value)})
Обсуждают сегодня