У меня есть textinput , и я хочу проверить пользовательский ввод, прежде чем он отобразится в textinput .

Я пытался использовать регулярные выражения, чтобы сделать это, но у меня проблема со следующим кодом:

  _onChangeHP(hp){
    console.log('hp', hp)
    let reg = /^08[0-9]{9,}$/
    if(reg.test(hp)){
      this.setState({noHP:hp})
    }
  }

  <TextInput
    value={this.state.noHP}
    maxLength={13}
    placeholder={'08xxxxxxxxx'}
    keyboardType="numeric"
    onChangeText={(text)=>this._onChangeHP(text)}
  />

Функция _onChangeHP () проверяется одна за другой, поэтому шаблон регулярного выражения никогда не передается в true в if Statement ,

Есть ли способ проверить ввод пользователя?

Мой ожидаемый результат - setState , когда первая строка пользовательского значения - 0 , а вторая строка - 8 , а остальное только числовое,

0
flix

2 ответа

вы можете использовать onSubmitEditing prop, который принимает функцию, которая вызывается при отправке текста.

Вы можете использовать шаблонную функцию, где число можно поставить в условном выражении.

<input  maxLength={13} placeholder='08xxxxxxxxx' keyboardType="numeric"
      pattern="[0][8][0-9]{11}"  />
58590099