Как отформатировать и проверить почтовый узел js - PullRequest
0 голосов
/ 22 сентября 2018

Мне бы хотелось, чтобы это письмо имело формат: a @ bc

Какой лучший способ сделать это?

У меня есть компонент для регистрации, и у меня есть поле, подобное этому:

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

В моем userRouter у меня есть функция для регистрации:

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

Кроме того, я использую mongo и в UserSchema у меня это для электронной почты:

email: {
        type: String,
        required: true
}

Спасибо!

1 Ответ

0 голосов
/ 22 сентября 2018

Используйте регулярное выражение примерно так:

Решение 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 здесь , вы найдете константную переменную 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])?)*$/;

Вы также можете использовать ее на внутренней стороне для проверки ввода.

...