Сопоставьте адрес электронной почты с URL компании с помощью RegEx - PullRequest
0 голосов
/ 12 октября 2019

У меня очень простой контакт, но для бизнес-требований мы должны подтвердить URL-адрес компании по электронной почте контактного пользователя

Если ваш адрес электронной почты user@examplecompany.com и вашURL-адрес http://examplecompany.com, форма будет проходить.

Я пытаюсь сделать это с помощью регулярных выражений, но я не могу на всю жизнь понять, что я делаю неправильно.

Вот мой код:

    validateEmail = (email, url) => {
       let rootUrl = url.match(/^(?:https?:\/\/)?(?:[^@\/\n]+@)?(?:www\.)?([^:\/?\n]+)/)[1];
       let emailDomain = email.match(/@(.*)/)[1];
       return rootUrl === emailDomain;
    }

Мой домен электронной почты возвращается undefined.

1 Ответ

3 голосов
/ 12 октября 2019

Я попытался реализовать это с помощью регулярного выражения следующим образом.

const validateEmail = (email, url) => {
  let regex = /(https?:\/\/)?(\w*\.)?(\w*\.\w*)/
  let rootUrl = url.match(regex)[3];
  let emailDomain = email.match(/@(.*)/)[1];
  return rootUrl === emailDomain;
}

// Testing
let emails = ["user@examplecompany.com", "user@othercompany.com"]

let urls = ["http://examplecompany.com", "https://examplecompany.com", "http://www.examplecompany.com", "https://www.examplecompany.com","examplecompany.com", "www.examplecompany.com"]

urls.forEach((url) => {
  emails.forEach((email) => {
    let valid = validateEmail(email, url)
    console.log(`email = ${email}, url = ${url}, isValid: ${valid}`)
  })
})

Вы также можете попытаться использовать URL api (конечно, он не работает в IE), чтобы извлечь имя хоста, а затем извлечь доменимя для сравнения с доменным именем адреса электронной почты.

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