带有角度6的电子邮件验证不带点

时间:2019-04-04 15:57:29

标签: angular

我正在进行电子邮件验证,效果很好。但是问题是,当用户未能输入点.时,它会检查为有效,并且如果用户在@符号后输入了三个字符而没有点。,它仍然有效,我如何确保在@符号后有一个字符,在该字符后也有一个点.

this.reportForm = this.formBuilder.group({
  fullName: ['', Validators.required],
  email: ['', Validators.compose([Validators.required,Validators.pattern('^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$')])],
  telePhone: ['', Validators.required],
});

即使是这样的dd@fff,它也会告诉您其有效

<ion-item style="color:red; background-color: white" *ngIf="!reportForm.controls.email.valid && email">
  Email not valid
</ion-item>

3 个答案:

答案 0 :(得分:0)

.是正则表达式中的元字符。它将匹配任何字母数字字符。
要匹配文字.的字符,您将需要使用\对其进行转义。

假设您还打算在整个表达式中匹配文字.,则模式字符串应为:'^[a-zA-Z0-9_\.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-\.]+$'

答案 1 :(得分:0)

我已使用以下模式进行电子邮件验证。此模式将检查点,并且对我有用。您可以尝试一下。

模式:

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

答案 2 :(得分:0)

我已经测试了以下模式可用于Angular 6+。请记住,没有一个正则表达式非常适合电子邮件验证。它取决于您要排除的内容和要包括的内容。下面的模式允许使用基本的拉丁字符,而无需任何RFC 5322允许的特殊字符。确保有一个“ @”和一个“。”在电子邮件中,并且允许2到10个字符之间的顶级域名扩展。例如,这将包括以“ .accountant”结尾的域,但不包括“ .accountants”结尾的域。

本文可以为您提供有关该主题的出色概述,并提供更多示例-https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch04s01.html

模式:

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