如何格式化和验证电子邮件节点 js

新手上路,请多包涵

我希望该电子邮件的格式如下:a@bc

最好的方法是什么?

我有一个注册组件,我有这样的字段:

 <mat-form-field>
              <input matInput placeholder="Email" name="email" [(ngModel)]="email" required>
</mat-form-field>

在我的 usersRouter 中,我具有注册功能:

 router.post('/users/register', (req, res) => {
        ...
        const user = new User({
            ...
            email: req.body.email,
            ...
        });
     ...
});

另外,我使用 mongo,在 UserSchema 中我有这个用于电子邮件:

 email: {
        type: String,
        required: true
}

谢谢!

原文由 RAL 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 431
2 个回答

使用类似的正则表达式:

解决方案1:

 ^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$

示例代码:

 const emailToValidate = 'a@a.com';
const emailRegexp = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;

console.log(emailRegexp.test(emailToValidate));


解决方案2:

因为您使用 Angular,您可以使用 Validators.email 在前端验证电子邮件。

如果您 在此处 查看 Validators.email 的 Angular 源代码,您会发现一个具有以下值的 EMAIL_REGEXP 常量变量:

 /^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$/;

您也可以在后端使用它来验证输入。

原文由 gr4viton 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以使用电子邮件验证器模块:

 var validator = require("email-validator");
validator.validate("test@email.com");

或者,如果您不想要任何依赖项:

 var emailRegex = /^[-!#$%&'*+\/0-9=?A-Z^_a-z{|}~](\.?[-!#$%&'*+\/0-9=?A-Z^_a-z`{|}~])*@[a-zA-Z0-9](-*\.?[a-zA-Z0-9])*\.[a-zA-Z](-?[a-zA-Z0-9])+$/;

function isEmailValid(email) {
    if (!email)
        return false;

    if(email.length>254)
        return false;

    var valid = emailRegex.test(email);
    if(!valid)
        return false;

    // Further checking of some things regex can't handle
    var parts = email.split("@");
    if(parts[0].length>64)
        return false;

    var domainParts = parts[1].split(".");
    if(domainParts.some(function(part) { return part.length>63; }))
        return false;

    return true;
}

资源:

https://www.npmjs.com/package/email-validator

https://github.com/manishsaraan/email-validator/blob/master/index.js

原文由 Daniel Barral 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题