我需要在文本框中仅输入 50 个电子邮件地址。我正在使用正则表达式来验证电子邮件地址,因为我还必须限制域名。我现在遇到的问题是我无法编写验证来将条目限制为最多 50 个电子邮件地址。
emailPattern = /^\w+([-+.']\w+)*@abc.com(, ?\w+([-+.']\w+)*@abc.com)*$/;
请在下面的链接中引用我的代码。
最佳答案
@angular/forms 中有一个电子邮件验证器.
您可以从电子邮件验证器 source 获取正则表达式:
const 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])?)*$/;
或者只是使用它为多个电子邮件创建自定义验证器:
function validateEmails(emails: string) {
return (emails.split(',')
.map(email => Validators.email(<AbstractControl>{ value: email }))
.find(_ => _ !== null) === undefined);
}
function emailsValidator(control: AbstractControl): ValidationErrors | null {
if (control.value === '' || !control.value || validateEmails(control.value)) {
return null
}
return { emails: true };
}
然后使用自定义验证器:
this.sendEmailForm = this.fb.group({
'toAddress': ['', emailsValidator]
});
关于javascript - 如何验证逗号分隔的电子邮件地址并限制电子邮件地址的 Angular ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52759889/