以逗号分隔的邮件-添加邮件长度检查(JS正则表达式)



我有一个电子邮件的正则表达式:

const EMAIL = /[a-z0-9-_.+]+@[a-z0-9]+[a-z0-9-.]*.[a-z0-9]{2,9}/;

和一个用于验证它们是否被逗号分隔。我需要它来验证输入

const COMAS = new RegExp(
`^(?:${VALID_EMAIL.source}(?:, *)?)+$`,
'i',
);

我想添加一个条件,从现在开始邮件的最大长度将是50。我尝试了其他SO线程的解决方案,但它们都不适合我。当数组中只有一个邮件时,它可以工作,但对于许多邮件,它会计算数组中所有字符串的长度…

const VALID_EMAIL = /(?!.{51})[a-z0-9-_.+]+@[a-z0-9]+[a-z0-9-.]*.[a-z0-9]{2,9}/;

您可以将此正则表达式与一个否定的字符类一起使用:

const VALID_EMAIL = /(?![^,]{51})[-a-z0-9_.+]+@[a-z0-9]+[a-z0-9-.]*.[a-z0-9]{2,9}/;

如果输入中有51个字符,(?!.{51})将匹配失败,而(?![^,]{51})只有在电子邮件中有51个非逗号字符时才会匹配失败。

最新更新