Как перестать вводить пробелы в поле ввода пароля в React Native?

password может быть любыми символами, включая пробел.

Я пробовал это: validator.js

const extract = (str, pattern) => (str.match(pattern) || []).pop() || '';

export function removeWhiteSpace(str) {
  return extract(str, '/^\S*$/;');
}

< Сильный > login.js

passwordHandle(value){
  this.setState({
      password:removeWhiteSpace(value)
  })
  console.log(removeWhiteSpace(value))
}

< Сильный > визуализации ( )

<View style={{paddingBottom:25}}>
  <TextField 
    label='Password'
    type='password' 
    value={password}
    error={errors.password}
    icon
    onChange={this.passwordHandle}/>
  <Image 
    source={require('../../../assets/img/lock.png')}
    style={styles.icon} />
</View>

Но это не работает. Он выполняет только '/ ^ \ S * $ /;' от removeWhiteSpace.

13
khalifathul 14 Фев 2018 в 14:12
Какова ваша функция removeWhiteSpace() и почему вы вызываете ее, когда значение не является пробелом?
 – 
Dyo
14 Фев 2018 в 14:15
Я отредактировал сейчас свой вопрос. @ Dyo
 – 
khalifathul
14 Фев 2018 в 14:18

3 ответа

Лучший ответ

Это простое регулярное выражение должно работать с функцией .replace:

passwordHandle(value){
   this.setState({
       password: value.replace(/\s/g, '')
   })
}
26
Dyo 14 Фев 2018 в 14:23
Идеально, твой ответ спас мне день, большое тебе спасибо, Дайо
 – 
khalifathul
14 Фев 2018 в 14:29
У меня есть имя пользователя. Как удалить пробелы (более 1 пробела и пробел в префиксе и суффиксе в тексте). Сверху заменим все пространство. Здесь, если у пользователя два имени, например, Джиффан Джо. Здесь мне нужны два имени с одним пробелом между ними. Не все места
 – 
sejn
15 Май 2020 в 16:45
Возможно, вам нужно использовать ответ ниже, используйте trim()
 – 
fnaquira
6 Ноя 2021 в 19:02

Вы также можете использовать trim () из объекта String-прототипа, если вас интересуют только пробелы, вводимые в конце (или в начале) строки.

passwordHandle(value){
   this.setState({
       password: value.trim()
   })
}

Дополнительная информация о trim (): https: / /developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim

2
Gargantulakon 16 Мар 2021 в 00:14
Обрезка не работает идеально, так как вы все равно можете добавить пробел между строкой.
 – 
Vaibhav Gidde
20 Май 2021 в 15:03
Вот почему я сказал: «Если вас беспокоит только ввод пробелов в конце (или в начале) строки». в моем ответе. фейспалм
 – 
Gargantulakon
21 Май 2021 в 15:17

Вы можете просто проверить пробелы в своей функции onChangeText следующим образом

onChangeText={(text) => {
 if (text.includes(' ')) {
   setText(text.trim()); 
  } else {
   setText(text);
  }
 }
}
3
amit.s19 1 Авг 2021 в 13:18