【问题标题】:How to validate comma separated email addresses and limit the email address in angular? [duplicate]如何验证逗号分隔的电子邮件地址并以角度限制电子邮件地址? [复制]
【发布时间】:2018-10-11 12:17:37
【问题描述】:

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

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

请在下面的链接中参考我的代码。

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

【问题讨论】:

  • {0,49}$替换*$
  • 嗨@WiktorStribiżew,非常感谢您的解决方案。它对我有用。
  • @Shraddha/@Wiktor Stribiżew:参考您的正则表达式,我正在尝试实现相同但接受不同域的电子邮件并将电子邮件限制为 5,但这给我带来了性能问题。请参考stackblitz.com/edit/angular-nbkp9h,下面是正则表达式。 /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})(, ?\w+([\.- ]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})){0,4}$/

标签: javascript regex angular typescript


【解决方案1】:

@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.

【讨论】:

    【解决方案2】:

    电子邮件地址只能包含字母数字字符和特殊符号!#$%'*+-/=?^_`{|}~。请注意,逗号不是有效的地址部分。

    因此,最简单的方法是简单地用逗号分割字符串,然后评估每个地址。您可以同时限制或修剪地址的数量。看起来你的代码已经用逗号分割了,所以一旦你这样做了,你就可以这样做:

    if(emailList.length > 50) 
       /* display an error or truncate the list */
    else 
       /* iterate over the list and test each address */
    

    【讨论】:

    • 您的第一段不正确,因为以下是有效的电子邮件地址"fancy,v1"@example.com,请注意“字符”
    猜你喜欢
    • 2017-06-10
    • 2013-10-25
    • 2015-07-14
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    相关资源
    最近更新 更多