Как проверить электронную почту с помощью регулярного выражения домена белого списка - PullRequest
0 голосов
/ 08 января 2019

Я хочу проверить домен по белому списку, например: .com, .co.id, .org,

здесь у меня есть шаблон регулярного выражения:

/^[_a-z0-9-]+(\.[_a-z0-9-]+)*(\+[a-z0-9-]+)?@[a-z0-9-]+(\.[a-z0-9-]+)*$/i;

так, если пользовательский ввод:

  • example@example.gov -> недействительно
  • example@example.com -> действует

Кто-нибудь может мне помочь? Спасибо

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Вы можете перейти в два этапа:

  • Убедитесь, что электронная почта правильно сформирована -> пример: https://www.regular -expressions.info / email.html , существует множество источников на эту тему

  • Проверить, что домен находится в белом списке доменов

function validateEmail(email) {
   
    //check that the input string is an well formed email 
    var emailFilter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
    if (!emailFilter.test(email)) {
        return false;
    }

    //check that the input email is in the whitelist
    var s, domainWhitelist = [".com", "co.id", ".org"];
    for (s of domainWhitelist)
      if(email.endsWith(s))
        return true;
    
    //if we reach this point it means that the email is well formed but not in the whitelist
    return false;
}

console.log("validate ->" + validateEmail(""));
console.log("validate abc ->" + validateEmail("abc"));
console.log("validate example@example.gov ->" + validateEmail("example@example.gov"));
console.log("validate example@example.com ->" + validateEmail("example@example.com"));
0 голосов
/ 08 января 2019

Попробуйте это

let e = ["example@example.gov",
         "example@example.com",
         "example@example.co.id",
         "example@example.org"];

let d = [".com", ".co.id", ".org"];

let f = x=> d.some(y => new RegExp(`@.*?(${y})`).test(x));

let v = e.filter(x=> f(x));

console.log(v);     // show valid emails

Объяснение : регулярного выражения: соответствует буквам после первой точки после @. Сначала мы получаем любые символы после @ ненадлежащим образом с помощью .*?, затем открываем группу ( до первой точки \. и проверяем, что все оставшиеся символы являются доменом ${y}).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...