检测电子邮件是否来自多个域的更好方法



我正在执行验证以检测电子邮件是否来自某个域。但是,我还希望将此域的沙盒环境列入白名单(沙盒中仅附加了一个".int")。这是我目前拥有的

if ( !(email.endsWith("@mydomain.com") || email.endsWith("@mydomain.com.int") ) {
throw new Error('invalid email');
}

基本上,只是在寻找一种更好的方法来检查电子邮件是否以多个域结尾。我可以从@(含)中删除所有内容,然后使用一些白名单数组进行检查。或者,我可以使用正则表达式。只是想知道别人怎么想。谢谢!

您可以在@后提取所有内容并检查白名单。

const mydomains = new Set(['mydomain.com', 'mydomain.com.int']);
let emaildomain = email.split('@')[1].toLowerCase();
if (!mydomains.has(emaildomain)) {
throw new Error('invalid email');
}

或正则表达式:

const mydomains_regex = /@(mydomain.com|mydomain.com.int)$/i;
if (!mydomains_regex.test(email)) {
throw new Error('invalid email');
}

最新更新