在react-native中调用js函数

时间:2017-02-17 01:20:37

标签: javascript react-native

在尝试通过正则表达式验证电子邮件时,我遇到了障碍。尝试使用内置的JavaScript .test()方法进行正则表达式测试时,我收到一个未定义的函数错误。在引用这些类型的函数时是否需要使用某种特殊关键字?

谢谢!感谢您的投入。

这是导致问题的两部分代码。

class LoginForm extends Component {

state = { email: '', password: '', warning: '', loading: false, color:     '#FFFFFF' };

  onButtonPress() {
      const { email, password } = this.state;

  this.setState({ loading: true });
  this.setState({ warning: '' });

  if (this.verifyEmail(email)) {
    firebase.auth().signInWithEmailAndPassword(email, password)
    .then(this.onLoginSuccess.bind(this))
    .catch(() => {
      firebase.auth().createUserWithEmailAndPassword(email, password)
        .then(this.onLoginSuccess.bind(this))
        .catch(this.onLoginFail.bind(this));
    });
  }
  else {
    this.onLoginFail.bind(this);
  }
}

  verifyEmail = (email) => {
    const regex = '^[a-zA-Z0-9_.+-]+@(?:(?:[a-zA-Z0-9-]+\.)?[a-zA-Z]+\.)?    (gmail)\.com$';
    return regex.test(email);
  }

1 个答案:

答案 0 :(得分:0)

你的正则表达式只是一个字符串但不是真正的正则表达式,你应该创建一个这样的正则表达式:

verifyEmail = (email) => {
    const regex = /^[a-zA-Z0-9_.+-]+@(?:(?:[a-zA-Z0-9-]+\.)?[a-zA-Z]+\.)?    (gmail)\.com$/;
    return regex.test(email);
}

正则表达式经常被重用。所以我建议你这样做:

const regex = /^[a-zA-Z0-9_.+-]+@(?:(?:[a-zA-Z0-9-]+\.)?[a-zA-Z]+\.)?    (gmail)\.com$/;

var verifyEmail = (email) => {
    return regex.test(email);
}