web-dev-qa-db-ja.com

電子メール検証(React Native)。すべてのエントリに対して結果を「無効」として返す

式と照合して、ユーザーのメールを検証しようとしています。しかし、私が得ている結果は、すべてのエントリに対して無効です。

更新コード

class dummytest extends Component{

  constructor(props){
    super(props);
    this.state = {
                email :'',
                validated: false ,
                 }
  };

go = () => {
           const reg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
           if (reg.test(this.state.email) === true){
               alert( valid);
           }
           else{
               alert();
           }
 }
  render(){
       return(
         <View style={{alignSelf:'center',marginTop:100}}>
              <TextInput autoCapitalize="none" autoCorrect={false} style={{height:20,width:200,backgroundColor:'blue'}} value={this.setState.email}/>

              <Button onPress={this.go.bind(this)}>
                 <Text> GO </Text>
              </Button>
          </View>

       );
    }
}
15
Avikrit Khati

OK、コードが動作しました。以下では、各ユーザー入力で電子メールを検証する方法を確認できます。

  1. あなたの機能部分:

    validate = (text) => {
    console.log(text);
    let reg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/ ;
    if(reg.test(text) === false)
    {
    console.log("Email is Not Correct");
    this.setState({email:text})
    return false;
      }
    else {
      this.setState({email:text})
      console.log("Email is Correct");
    }
    }
    
  2. あなたTextInputコンポーネント:

        <TextInput
          placeholder="Email ID"
          onChangeText={(text) => this.validate(text)}
          value={this.state.email}
        />
    
42
Neel Gala

構文エラーのように見えます。 validateの定義内に直接goというネストされた関数があります。

一般的な規則として、この種のエラーが一目で検出できるように、インデントと中括弧の一貫性を保つことをお勧めします。括弧が並んでいない場合は問題があります。

次に、このコードを機能させるためにできることがいくつかあります。

  • validate (email)行とそれに付随する閉じ括弧を削除します
  • goのthis.state.emailを介して参照メール
  • 電子メールが検証されたかどうかを示す追加の状態変数を追加します。

何かのようなもの:

this.state = {
 email :'',
 validated : false,
}

そして...

go = () => {  
        if (this.state.email.test(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/)==0) {
            this.setState({ validated : true });
        } else {
            this.setState({ validated : false });
        }
    }
1
jaws
validate = (text) => {
console.log(text);
let reg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/ ;
if(reg.test(text) === false)
{
alert("Email is Not Correct");
this.setState({email:text})
return false;
  }
else {
  this.setState({email:text})
  alert("Email is Correct");
}
}


You can put this function validate in onChangeText propert of TextInput
0
Apurva Aggarwal