Javascript 如何在textinput中验证用户电话号码?

Javascript 如何在textinput中验证用户电话号码?,javascript,react-native,validation,Javascript,React Native,Validation,我有一个textinput,我想在它显示在textinput上之前验证用户输入 我已尝试使用regex来执行此操作,但以下代码存在问题: _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

我有一个
textinput
,我想在它显示在
textinput
上之前验证用户输入

我已尝试使用regex来执行此操作,但以下代码存在问题:

  _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)}
  />
\n更改hp(hp){
console.log('hp',hp)
设reg=/^08[0-9]{9,}$/
if(注册测试(hp)){
this.setState({noHP:hp})
}
}
这个。_onChangeHP(text)}
/>
\u onChangeHP()
函数逐个检查,因此
regex模式
if语句
中永远不会传递true

是否有方法验证用户输入


当用户值第一个字符串为
0
,第二个字符串为
8
,其余字符串仅为数字时,我的预期结果是
setState

您可以使用模式函数,其中数字可以放在条件中

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

你不能只用一个正则表达式

\onChangeHP('08')
_onChangeHP('01')
_onChangeHP('08222222')
功能更改hp(hp){
让regStartsWith=newregexp(“^08”、“i”);
设regAfter=/^\d+$/;
if(regStartsWith.test(hp)){//这将检查是否从08开始
if(在测试(hp子字符串(2))之后重新设置){
console.log(true)//这将检查hp是否在08之后有数字
返回true;
}
否则{
console.log(false);
返回false;
}
}
否则{
console.log(false);
返回false;
}

}
因为我的问题是关于
textinput
我需要逐个检查每个字符串,当用户键入0时,检查
\onChangeHP()
它将永远不会进入
如果语句
,换句话说,textinput将永远返回false