javascript - 如何验证逗号分隔的电子邮件地址并限制电子邮件地址的 Angular ?

标签 javascript regex angular typescript

我需要在文本框中仅输入 50 个电子邮件地址。我正在使用正则表达式来验证电子邮件地址,因为我还必须限制域名。我现在遇到的问题是我无法编写验证来将条目限制为最多 50 个电子邮件地址。

emailPattern = /^\w+([-+.']\w+)*@abc.com(, ?\w+([-+.']\w+)*@abc.com)*$/;

请在下面的链接中引用我的代码。

https://stackblitz.com/edit/angular-wfwfow

最佳答案

@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]
});

Here is a fork of your code with the suggestion solution.

关于javascript - 如何验证逗号分隔的电子邮件地址并限制电子邮件地址的 Angular ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52759889/

相关文章:

javascript - 大型列表的过滤性能

javascript - 删除选定的行 - Struts2

Java 字符串拆分为非字母字符

angular - canActivateChild 被多次调用

typescript - 在 Angular2 中实现动态路由(Typescript)

javascript - Div Lights Fade 脚本 - 不适用于 Mac?

javascript - IE9 中的 innerHTML 追加

c# - 查找正则表达式模式匹配字符串有多个条件?

regex - 正则表达式限制字符串大小

angular - 如何在 Visual Studio 2015 中为 Typescript 添加类型到 typings.json?