式と照合して、ユーザーのメールを検証しようとしています。しかし、私が得ている結果は、すべてのエントリに対して無効です。
更新コード
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、コードが動作しました。以下では、各ユーザー入力で電子メールを検証する方法を確認できます。
あなたの機能部分:
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");
}
}
あなたTextInputコンポーネント:
<TextInput
placeholder="Email ID"
onChangeText={(text) => this.validate(text)}
value={this.state.email}
/>
構文エラーのように見えます。 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 });
}
}
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