Regex: Как сделать доменное имя обязательным при проверке идентификатора электронной почты - PullRequest
0 голосов
/ 11 февраля 2020

Я использую следующее регулярное выражение в валидаторах моего angular приложения для проверки идентификатора электронной почты.

Validators.pattern('^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$').

Это прекрасно работает для некоторых шаблонов электронной почты.

Однако электронная почта идентификаторы типа test@.com также считаются действительными идентификаторами электронной почты.

Я хочу сделать доменное имя обязательным в регулярном выражении, чтобы пользователь всегда вводил некоторую строку перед вводом '.com' (или .in,. со c)

enter image description here

enter image description here

enter image description here

Ответы [ 2 ]

2 голосов
/ 11 февраля 2020

То, что вы можете сделать без каких-либо регулярных выражений angular, предоставьте валидатор по умолчанию, сделайте так:

Файл Ts

      email: ['', [Validators.required, Validators.email]],

HTML Файл

 <p class="error" *ngIf="signin['email'].errors && signinForm.get('email').touched">
<span class="error-message" 
*ngIf="signin['email'].errors.required">Email is a required field</span>
<span class="error-message" *ngIf="signin['email'].errors.email">Email ID is not valid</span>
</p>
0 голосов
/ 11 февраля 2020

Я ожидаю, что следующее будет работать (у меня нет Angular):

^[a-z0-9._%+-]+@[a-z0-9-]+\.[a-z]{2,4}$

Разница в том, что я удалил . из разрешенных символов после @ - особенно если учесть, что вы все равно вводите . перед TLD.


Примечание: ваше регулярное выражение кажется слишком простым даже для неэкзотических c адресов электронной почты. Возможно, вы захотите выполнить поиск по net, чтобы найти «правильные» валидаторы регулярных выражений для адресов электронной почты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...