【问题标题】:React - A More Comprehensive Email Validation [duplicate]React - 更全面的电子邮件验证 [重复]
【发布时间】:2025-12-08 03:40:01
【问题描述】:

我希望进行比我目前拥有的更全面的电子邮件验证。如果您查看我的代码,我只会检查 @ 符号并以 .com 结尾。我可以在当前的代码配置中包含更全面的验证检查吗?

JS:

this.state = {
  inputs: {
    name: '',
    email: '',
    message: '',
  },
  errors: {
    name: false,
    email: false,
    message: false,
  },
};

handleOnChange = e => {

const { name, value } = e.target;

if (name === 'email') {
  this.setState({
    inputs: {
      ...this.state.inputs,
      [name]: value,
    },
    errors: {
      ...this.state.errors,
      email:
        (value.includes('@') && value.slice(-4).includes('.com'))
          ? false
          : true,
    },
  });
} else {
  this.setState({
    inputs: {
      ...this.state.inputs,
      [name]: value,
    },
    errors: {
      ...this.state.errors,
      [name]: false,
    },
  });
}

};

【问题讨论】:

  • 您应该考虑使用正则表达式以简化您的验证。检查上面评论中的链接
  • 无论您得到(或没有)任何答案,您都应该阅读以下内容:regular-expressions.info/email.html
  • 另外,Eric,我的.net.edu.us 电子邮件地址呢?它们是有效的,但不会通过 .com 的测试
  • ...终于...你为什么不直接使用<input type="email" ...>
  • 谢谢大家 - 正则表达式解决方案将完美运行!

标签: javascript reactjs email-validation


【解决方案1】:

验证电子邮件的最佳方法是使用正则表达式:

const emailRegEx = /^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;

以上将匹配 99.99% 的有效电子邮件

【讨论】: