J'essaie de valider le courrier électronique d'un utilisateur en le comparant à une expression. Mais le résultat obtenu est invalide pour toutes les entrées.
CODE MIS À JOUR
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>
);
}
}
Ok, j'ai le code qui fonctionne, ci-dessous, vous pouvez jeter un œil à la validation de l'email sur chaque entrée d'utilisateur.
Votre partie de fonction:
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");
}
}
Votre composant TextInput:
<TextInput
placeholder="Email ID"
onChangeText={(text) => this.validate(text)}
value={this.state.email}
/>
Ressemble à une erreur de syntaxe. Vous avez une fonction imbriquée appelée validate
directement dans la définition de go
.
En règle générale, je vous suggérerais de conserver l'indentation et les accolades cohérentes pour que ce type d'erreur soit détectable en un coup d'œil - lorsque les crochets ne sont pas alignés, il y a un problème.
Ensuite, vous pouvez faire plusieurs choses pour que ce code fonctionne:
validate (email)
ainsi que son support fermé go
Quelque chose comme:
this.state = {
email :'',
validated : false,
}
Et...
go = () => {
if (this.state.email.test(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/)==0) {
this.setState({ validated : true });
} else {
this.setState({ validated : false });
}
}