Есть моя версия валидатора электронной почты. Этот код ориентирован на ООП и реализован как класс со статическими методами. Вы найдете две версии валидаторов: строгий (EmailValidator.validate
) и добрый (EmailValidator.validateKind
). Сначала выдает ошибку, если адрес электронной почты недействителен, и возвращает адрес электронной почты в противном случае. Второй возвращает логическое значение, которое говорит, что адрес электронной почты действителен. Я предпочитаю строгую версию в большинстве случаев.
export class EmailValidator {
/**
* @param {string} email
* @return {string}
* @throws {Error}
*/
static validate(email) {
email = this.prepareEmail(email);
const isValid = this.validateKind(email);
if (isValid)
return email;
throw new Error(`Got invalid email: ${email}.`);
}
/**
* @param {string} email
* @return {boolean}
*/
static validateKind(email) {
email = this.prepareEmail(email);
const regex = this.getRegex();
return regex.test(email);
}
/**
* @return {RegExp}
* @private
*/
static getRegex() {
return /^(([^<>()\[\]\\.,;:\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,}))$/;
}
/**
* @param {string} email
* @return {string}
* @private
*/
static prepareEmail(email) {
return String(email).toLowerCase();
}
}
Чтобы проверить электронную почту, вы можете воспользоваться следующими способами:
// First way.
try {
EmailValidator.validate('balovbohdan@gmail.com');
} catch (e) {
console.error(e.message);
}
// Second way.
const email = 'balovbohdan@gmail.com';
const isValid = EmailValidator.validateKind(email);
if (isValid)
console.log(`Email is valid: ${email}.`);
else
console.log(`Email is invalid: ${email}.`);