Я пытаюсь найти относительно простой и надежный метод для извлечения базового URL из строковой переменной с помощью JavaScript (или jQuery).
Например, учитывая что-то вроде:
http://www.sitename.com/article/2009/09/14/this-is-an-article/
Я хотел бы получить:
http://www.sitename.com/
Является ли регулярное выражение лучшим выбором? Если да, то какой оператор я могу использовать, чтобы назначить базовый URL, извлеченный из заданной строки, новой переменной?
Я провел некоторый поиск по этому вопросу, но все, что я нахожу в мире JavaScript, похоже, вращается вокруг сбора этой информации из фактического URL документа, используя location.host или подобное.
javascript
regex
string
url
неумело
источник
источник
Ответы:
Изменить: Некоторые жалуются, что он не учитывает протокол. Поэтому я решил обновить код, так как он помечен как ответ. Для тех, кто любит однострочный код ... ну, извините, поэтому мы используем минимизаторы кода, код должен быть удобочитаемым, и этот способ лучше ... на мой взгляд.
Или используйте решение Дэвидса снизу.
источник
url = 'sitename.com/article/2009/09/14/this-is-an-article'; newurl = 'http://' + url.split('/')[0];
//now url === "http:://stackoverflow.com"
::
Реализованы браузеры на основе WebKit, Firefox начиная с версии 21 и текущие версии Internet Explorer (IE 10 и 11)
location.origin
.location.origin
включает в себя протокол , домен и опционально порт URL.Например,
location.origin
из URLhttp://www.sitename.com/article/2009/09/14/this-is-an-article/
естьhttp://www.sitename.com
.Для таргетинга браузеров без поддержки
location.origin
используйте следующий лаконичный полифилл:источник
window.location.hostname
пропустит номер порта, если он указан, так что используйтеwindow.location.host
. Таким образом, полное «базовое имя», включая косую черту, будет:window.location.protocol+"//"+window.location.host + "/";
Не нужно использовать JQuery, просто используйте
источник
Нет причин делать расщепления, чтобы получить путь, имя хоста и т. Д. Из строки, которая является ссылкой. Вам просто нужно использовать ссылку
Вы можете легко сделать это с помощью jQuery, добавляющего элемент и читающего его атрибут.
источник
источник
Затем :
Для вашего запроса вам необходимо:
Обзор 07-2017: он также может быть более элегантным и имеет больше возможностей
затем
Прохладно!
источник
Если вы используете jQuery, это отличный способ манипулировать элементами в javascript, не добавляя их в DOM:
источник
myAnchor.prop('hostname')
. Я предполагаю, что jQuery изменился за последние 5 лет ... Спасибо за ответ!Легким, но полным подходом к получению базовых значений из строкового представления URL является правило регулярного выражения Дугласа Крокфорда:
Если вам нужен более мощный инструментарий для манипулирования URL- адресами, попробуйте URI.js. Он поддерживает геттеры, сеттеры, нормализацию URL-адресов и т. Д., И все это с красивым цепным API.
Если вы ищете плагин jQuery, то jquery.url.js должен помочь вам
Более простой способ сделать это - использовать элемент привязки, как предложил @epascarello. Это имеет тот недостаток, что вы должны создать элемент DOM. Однако это может быть кэшировано в закрытии и повторно использовано для нескольких URL:
Используйте это так:
источник
Что ж, объект URL API избегает разбиения и создания URL-адресов вручную.
источник
Если вы извлекаете информацию из window.location.href (адресная строка), используйте этот код для получения
http://www.sitename.com/
:Если у вас есть строка,
str
то есть произвольный URL (не window.location.href), используйте регулярные выражения:Я, как и все во Вселенной, ненавижу читать регулярные выражения, поэтому я выделю их на английском:
Не нужно создавать элементы DOM или делать что-то сумасшедшее.
источник
Я использую простое регулярное выражение, которое извлекает хост из URL:
и использовать это так
Обратите внимание, что если
url
не заканчивается/
на,host
то не будет заканчиваться на/
.Вот несколько тестов:
источник
Вы можете использовать приведенные ниже коды для получения различных параметров текущего URL
источник
Затем вы можете использовать это так ...
Значение URL будет ...
«Var URL» также содержит два метода.
В этом случае значение paramQ будет равно 1.
Значением allParameters будут только имена параметров.
Проверено на IE, Chrome и Firefox.
источник
Вместо необходимости учитывать window.location.protocol и window.location.origin и, возможно, пропустить указанный номер порта и т. Д., Просто захватите все до 3-го «/»:
источник
Это работает:
источник
location.pathname = '/'
Вы можете сделать это с помощью регулярного выражения:
это подходит ?
источник
Чтобы получить источник любого URL, включая пути внутри веб-сайта (
/my/path
) или schemaless (//example.com/my/path
), или full (http://example.com/my/path
), я собрал быструю функцию.В приведенном ниже фрагменте все три вызова должны регистрироваться
https://stacksnippets.net
.источник
Это работает для меня:
источник
window.location.href выдает текущий адрес URL из адресной строки браузера.
это может быть любая вещь, например https://stackoverflow.com/abc/xyz или https://www.google.com/search?q=abc tilllastbackslashregex.exec (), запустить regex и повторно выполнить сопоставленную строку до последней обратной косой черты, т.е. https : //stackoverflow.com/abc/ или https://www.google.com/ соответственно
источник
Хорошим способом является использование нативного
URL
объекта API JavaScript . Это обеспечивает много полезных частей URL.Например:
Как вы видите здесь, вы можете просто получить доступ ко всему, что вам нужно.
Например:
console.log(urlObject.host); // "stackoverflow.com"
документ для URL
источник