wake-up-neo.com

E-Mail-Bestätigung (React Native). Rückgabe des Ergebnisses für alle Einträge als 'ungültig'

Ich versuche, die E-Mail eines Benutzers zu überprüfen, indem ich sie mit einem Ausdruck vergleicht. Aber das Ergebnis, das ich erhalte, ist für alle Einträge ungültig. 

AKTUALISIERTER CODE

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>

       );
    }
}
5
Avikrit Khati

Ok, der Code funktioniert. Unten können Sie die E-Mail für jede Benutzereingabe überprüfen.

  1. Ihr Funktionsteil: 

    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. Ihre TextInput-Komponente: 

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

Sieht aus wie ein Syntaxfehler. Sie haben eine verschachtelte Funktion namens validate direkt in der Definition für go.

Als allgemeine Regel empfehle ich, Ihre Einrückung und geschweiften Klammern konstant zu halten, damit diese Art von Fehlern auf einen Blick erkannt werden kann. Wenn die Klammern nicht in einer Reihe angeordnet sind, gibt es ein Problem.

Dann gibt es ein paar Dinge, die Sie tun können, damit dieser Code funktioniert:

  • Entfernen Sie die validate (email)-Leitung zusammen mit der zugehörigen Klammer
  • Referenz-E-Mail über this.state.email in go
  • Fügen Sie eine zusätzliche Zustandsvariable hinzu, um anzuzeigen, ob die E-Mail validiert wurde oder nicht.

So etwas wie: 

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

Und...

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