Preg: как написать шаблон preg для получения имени домена из электронной почты?

От адреса электронной почты, такого как [email protected], я хочу получить имя домена gmail.com. Я хочу использовать этот шаблон в текстовом поле в Javascript.

Pease предлагает мне оптимизированный и быстрый шаблон preg для вышеуказанного требования...

Ответы

Ответ 1

Вы можете заменить все, вплоть до символа @, чтобы получить домен. В Javascript:

var email = '[email protected]';
var domain = email.replace(/.*@/, "");
alert(domain);

Ответ 2

Почему бы просто не сделать это.

var email = "[email protected]", i = email.indexOf("@");
if (i != -1) {
   email = email.substring(i);
}

Regex действительно не требуется, вы также можете пойти email = email.split("@")[1];

Ответ 3

Использование простого разделения строк не будет работать с такими адресами, как '[email protected]'@example.com, который является допустимым адресом (технически). Я считаю, что расщепление на @ и принятие последнего элемента должно быть прекрасным, потому что в домене не могут появляться символы @.

Или, поскольку вы запросили регулярное выражение: [^@]+$

Ответ 4

У меня только есть необходимость реализовать это и придумал решение, которое объединяет большинство уже упомянутых методов:

var email = "[email protected]@gmail.com";
var email_string_array = email.split("@");
var domain_string_location = email_string_array.length -1;
var final_domain = email_string_array[domain_string_location];

Итак, если адрес электронной почты имеет несколько символов @, вам просто нужно разделить строку электронной почты на "@" и рассчитать, сколько элементов в новом созданном массиве затем вычитайте 1 из него, и вы можете взять правый элемент из массива с этим номером.

Вот jsfiddle: http://jsfiddle.net/47yqn/

Он показал 100% успех для меня!

Ответ 5

Я бы попробовал

\b.*@([A-Za-z0-9.-]+\.[A-Za-z]{2,4})\b

Или, возможно, настройте его на небольшую замену \b на ^ и $. При этом вы можете сопоставить любой домен с A-Z, a-z и 0-9 символами.

Ответ 6

Вы можете сделать это

var extract_company_name = function(email){
  var temp = email.replace(/.*@/, '').split('.');
    return temp[temp.length - 2];
}
extract_company_name(email)

это приведет к извлечению домена из любого почтового ящика.

код в jsbin

Ответ 7

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

var str=inputAddress;
      var patt1 = "(http://|https://|ftp://|www.|[a-z0-9._%+-][email protected])([^/\r\n]+)(/[^\r\n]*)?";
var result = str.match(patt1);
var domain=result===null?str:result[2];
return domain.toString().startsWith("www.")?domain.toString().slice(4):domain;

Ответ 8

var email = '[email protected]';
var domain = email.replace(/.*@/, "").split('.')[0];
console.log(domain); // gmail