Что такое правильное регулярное выражение для захвата корневого домена данного URL? - PullRequest
4 голосов
/ 15 декабря 2009

В идеале, я хотел бы захватить foo.com из чего-то вроде http://foo.com/bar?param=value или https://www.foo.com

Спасибо.

Редактировать: Извините за неопределенность. Я буду делать это в Javascript.

2nd Edit: я должен опубликовать свою ужасную первую попытку: https?: // w? W? W? [.]? [^? /]

Ответы [ 4 ]

16 голосов
/ 15 декабря 2009

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

var a = document.createElement('a');
a.href = 'http://foo.com/bar?param=value';
a.hostname; // "foo.com"

Voila!

1 голос
/ 16 декабря 2009

Для полной кросс-браузерной совместимости просто используйте объект документа, а не окно:

var theHost = document.location.host;

1 голос
/ 15 декабря 2009

Если вы делаете это в JavaScript, вам даже не нужно регулярное выражение. Вы можете использовать объект местоположения так:

var host = window.location.host;

Эта ссылка содержит дополнительную информацию о том, как получить другие части URL: http://www.comptechdoc.org/independent/web/cgi/javamanual/javalocation.html.

0 голосов
/ 15 декабря 2009

Если вы действительно продали использование регулярных выражений, а не встроенных в язык инструментов (например, функции PHP parse_url), то что-то вроде:

(?:(\w+)://)([^/]+)(/\w+)?

сделает это очень грубо, с именем хоста в подгруппе 2. Это просто быстрый и грязный хак (и не будет работать во всех случаях), и я бы посоветовал использовать встроенный язык в инструментах.

Если это Javascript и текущий URL, посмотрите window.location.host или window.location.hostname.

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