Как проверить номер телефона пользователя в textinput? - PullRequest
0 голосов
/ 28 октября 2019

У меня есть 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() функция проверяется одна за другой, поэтому regex pattern никогда не передает true в if statement,

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

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

Ответы [ 2 ]

0 голосов
/ 28 октября 2019

вы не можете сделать это только с одним регулярным выражением

_onChangeHP('08')
_onChangeHP('01')
_onChangeHP('08222222')
function _onChangeHP(hp){
        let regStartsWith = new RegExp('^08', 'i');
        let regAfter =  /^\d+$/;
        if(regStartsWith.test(hp)){ // this will check if starts with 08
          if(regAfter.test(hp.substring(2))){
             console.log(true) // this will check if hp has number after 08
             return true;
          }
          else{
            console.log(false);
            return false;
          }
        }
        else{
          console.log(false);
          return false;
        }
      }
0 голосов
/ 28 октября 2019

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

<input  maxLength={13} placeholder='08xxxxxxxxx' keyboardType="numeric"
      pattern="[0][8][0-9]{11}"  />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...