我有一个电子邮件的正则表达式:
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个非逗号字符时才会匹配失败。