代码之家  ›  专栏  ›  技术社区  ›  Loki

按顺序验证电子邮件,空字符串失败

  •  0
  • Loki  · 技术社区  · 8 年前

    嗨,伙计们,我有个简单的问题 有现场邮件,对这样的邮件有效

    module.exports = (sequelize, DataTypes) => sequelize.define('user', {
        name: {
            type: DataTypes.STRING,
        },
        phone: {
            type: DataTypes.STRING,
        },
        email: {
            type: DataTypes.STRING,
            validate: {
                isEmail: true,
            },
        },
    });
    

    1 回复  |  直到 8 年前
        1
  •  4
  •   KarlR    8 年前

    可以,您可以尝试创建自定义验证器:

    validateEmail = (email) => {
      var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
      return re.test(String(email).toLowerCase());
    }
    
    module.exports = (sequelize, DataTypes) => sequelize.define('user', {
      name: {
        type: DataTypes.STRING,
      },
      phone: {
        type: DataTypes.STRING,
      },
      email: {
        type: DataTypes.STRING,
    
        validate: {
          isEmailOrEmpty(val, next) {
            if (!val || val === "" || validateEmail(val)) {
              return next()
            }
            else {
              return next('email is invalid')
            }
          }
        }
      }
    });
    

    example )

    • !val -检查是否存在值
    • val === ""
    • validateEmail(val)) -使用正则表达式验证电子邮件