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