代码之家  ›  专栏  ›  技术社区  ›  Asif vora

本地响应:手机号码验证仅接受数字值

  •  2
  • Asif vora  · 技术社区  · 6 年前

    如何在react native中验证手机号码接受唯一的数字值。

     <TextInput
          ref='mobileNo'
          keyboardType="numeric"
          style={[styles.textInput, { width: '100%' }]}
          placeholder='Enter mobile number'
          onChangeText={(value) => this.handleChange('mobileNo', value)}   />
    

    我用过 keyboardType="numeric" 但它也接受特殊字符,所以我只接受数值。

    4 回复  |  直到 6 年前
        1
  •  3
  •   Nirmalsinh Rathod    6 年前

    您需要检查输入字符串是否为数字。检查以下代码:

     <TextInput
       ref='mobileNo'
       keyboardType="numeric"
       style={[styles.textInput, { width: '100%' }]}
       placeholder='Enter mobile number'
       onChangeText={(value) => 
       let num = value.replace(".", '');
         if(isNaN(num)){
             // Its not a number
         }else{
            this.handleChange('mobileNo', num)}  
         }
     />
    
        2
  •  2
  •   vm909    6 年前

    尝试使用 keyboardType='phone-pad' .

        3
  •  1
  •   Vishal Vaghasiya    6 年前

    使用此验证。

    mobilevalidate(text) {
        const reg = /^[0]?[789]\d{9}$/;
        if (reg.test(text) === false) {
          this.setState({
            mobilevalidate: false,
            telephone: text,
          });
          return false;
        } else {
          this.setState({
            mobilevalidate: true,
            telephone: text,
            message: '',
          });
          return true;
        }
      }
    
        4
  •  0
  •   Yossi    6 年前

    这样做的方法是签入输入的OnChangeText处理程序,并在用户输入非数字字符时发出错误。

    如果字段是一个受控制的组件(其值是从状态变量设置的,并且状态变量是在onChangeText处理程序中设置的),则根本无法接受无效字符(以便用户键入,例如“.”,并且不会显示dven)。

    您是否向用户解释不接受其输入的原因取决于您(可以将其写入字段标签中,例如“电话号码(仅限数字),也可以将其写入字段下方的字符串中,或者显示错误)。