2015-07-28 2 views
2

У меня есть функция, которая принимает имя домена в качестве аргумента, но домен должен быть в формате xxx.com. например http://subdomain.example.com должен быть передан в функцию как example.com.Regex для получения SLD + TLD из строки домена

Я написал следующее регулярное выражение, но оно возвращает TLD (.com). Я немного новичок с регулярным выражением, поэтому не могу понять, где я ошибся ... Первое утверждение - извлечь http:// из domain, а второй оператор должен извлечь какой-либо субдомен.

var domain = req.query.domain.replace(/.*?:\/\//g, '').replace(/^[^.]+\./g, '');

Используя выше регулярное выражение, http://example.com становится com.

ответ

2

Я думаю, что легче совместить шаблон напрямую, чем сопоставлять и удалять его дополнение. Я бы использовал шаблон /[^./]+\.[^./]+$/. Это соответствует двум прогонам неспецифических символов, разделенных периодом в конце строки.

alert('http://subdomain.example.com'.match(/[^./]+\.[^./]+$/)[0]); 
 
alert('http://example.com'.match(/[^./]+\.[^./]+$/)[0]);

0

Намного проще ответ заключается в использовании document.createElement трюк показано here

Чтобы получить имя хоста и TLD, вы бы просто написать

var link = document.createElement('a'); 
link.href = req.query.domain; 

var formattedDomain = link.hostname; //yay 
+0

Это узел , поэтому 'document' недоступен. – leaksterrr

+1

Было бы полезно включить эту информацию. –

Смежные вопросы