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>
);
}
}
Ok, der Code funktioniert. Unten können Sie die E-Mail für jede Benutzereingabe überprüfen.
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");
}
}
Ihre TextInput-Komponente:
<TextInput
placeholder="Email ID"
onChangeText={(text) => this.validate(text)}
value={this.state.email}
/>
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:
validate (email)
-Leitung zusammen mit der zugehörigen Klammer go
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 });
}
}
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