电子邮件验证(React Native)。将结果返回为所有条目的“无效”

时间:2017-04-28 09:25:57

标签: javascript validation react-native react-native-ios

我正在尝试通过针对表达式进行检查来验证用户电子邮件。但我得到的结果对所有条目都无效。

更新代码

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>

       );
    }
}

7 个答案:

答案 0 :(得分:33)

好的,我的代码正常运行,您可以在下方查看每个用户输入的电子邮件验证信息。

  1. 您的功能部分:

    Response responseData;
    await Task.Run(() => 
    {
         responseData = JsonConvert.DeserializeObject<Response>(content);
         // preform your Realm database add/updates, 
         // remember you are now on a different thread so get a new Realm Instance
    });
    
  2. 您的TextInput组件:

    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");
    }
    }
    

答案 1 :(得分:1)

看起来像语法错误。您已在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 });
        }
    }

答案 2 :(得分:0)

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

答案 3 :(得分:0)

具有验证电子邮件的功能(可能在要重复使用的某个单独模块中),

this.personService.getMyList().subscribe( r => console.log(r))

您可以验证电子邮件输入,

实时验证:

export function validateIsEmail(email) {
  return /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email);
}

在此示例中,setEmail和setInlineValidations是useState挂钩(例如 <TextInput ... onChangeText={emailText => { setEmail(emailText); setInlineValidations({ ...inlineValidations, emailNotValid: !validateIsEmail(emailText), }); }} /> )定义的状态设置器,您当然可以使其适应状态处理方式。

答案 4 :(得分:0)

   isEmailValid = () => {
    const expression = /(?!.*\.{2})^([a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+(\.[a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)*|"((([\t]*\r\n)?[\t]+)?([\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*(([\t]*\r\n)?[\t]+)?")@(([a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.)+([a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.?$/i;
    return expression.test(String(this.state.email_id).toLowerCase())
}

答案 5 :(得分:0)

通过使用名为 validator

的 npm 包,无需编写大量代码即可轻松验证电子邮件
  1. 安装
    npm i validator
    
  2. 导入包
    const validator = require('validator');
    
  3. 用它来验证电子邮件
    validator.isEmail('john.doe@example.com');    // true
    

有关更多信息,请参阅文档: https://www.npmjs.com/package/validator

答案 6 :(得分:-1)

我已经创建了一个Helper类并且这样做:

export default class Helper {

     static isEmailValid(email) {
        let reg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
        return reg.test(email) == 0;
   }
}

通过以下方式调用此方法:

if (Helper.isEmailValid(this.state.emailText)) {
    console.log("Email is correct");
} else {
    console.log("Email is not correct");
}