preg: как написать шаблон preg для получения доменного имени из электронной почты? - PullRequest
18 голосов
/ 03 марта 2011

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

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

Ответы [ 8 ]

53 голосов
/ 03 марта 2011

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

var email = 'test@gmail.com';
var domain = email.replace(/.*@/, "");
alert(domain);
6 голосов
/ 03 марта 2011

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

var email = "something@gmail.com", i = email.indexOf("@");
if (i != -1) {
   email = email.substring(i);
}

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

4 голосов
/ 24 ноября 2013

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

var email = "test@test@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% успеха!

4 голосов
/ 03 марта 2011

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

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

1 голос
/ 04 апреля 2017

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

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

это приведет к получению домена с любого электронного письма.

код в jsbin

1 голос
/ 03 марта 2011

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

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

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

0 голосов
/ 29 ноября 2017
var email = 'test@gmail.com';
var domain = email.replace(/.*@/, "").split('.')[0];
console.log(domain); // gmail
0 голосов
/ 23 мая 2017

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

var str=inputAddress;
      var patt1 = "(http://|https://|ftp://|www.|[a-z0-9._%+-]+@)([^/\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;
...