I would like that email had format like: [email protected].
Which is the best way to do it?
I have a component for registration and I have the field like this:
<mat-form-field>
<input matInput placeholder="Email" name="email" [(ngModel)]="email" required>
</mat-form-field>
In my usersRouter I have the function for registration:
router.post('/users/register', (req, res) => {
...
const user = new User({
...
email: req.body.email,
...
});
...
});
Also, I use mongo and in the UserSchema I have this for the email:
email: {
type: String,
required: true
}
Thanks!
How Do I Check if An Email is Valid in Node? You can verify email addresses in Node and perform Node email validation easily by utilizing Deep Email Validator. It can perform the validation effectively by checking the local part for common typos, DNS records, and the SMTP server response.
You can use email validator module:
var validator = require("email-validator");
validator.validate("[email protected]");
Or, if you don't want any dependencies:
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;
}
Source:
https://www.npmjs.com/package/email-validator
https://github.com/manishsaraan/email-validator/blob/master/index.js
Use regular expression something like that:
Solution 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])?)*$
Sample code:
const emailToValidate = '[email protected]';
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));
Solution 2:
Because you use angular, you are able to validate the email on front-end side by using Validators.email.
If you check angular source code of Validators.email here, you will find an EMAIL_REGEXP const variable with the following value:
/^(?=.{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])?)*$/;
You could use it on back-end side too, to validate the input.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With