我正在执行验证以检测电子邮件是否来自某个域。但是,我还希望将此域的沙盒环境列入白名单(沙盒中仅附加了一个".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');
}