Regex, чтобы получить первое слово после косой черты в URL
Мне нужно получить первое слово после косой черты в URL в JavaScript, я предполагаю, что использование регулярного выражения было бы идеально.
Вот идея того, как могут выглядеть URL-адреса:
- http://mysite.com/section/
- http://mysite.com/section/ subsection /
- http://mysite.com/section-with-dashes/
- http://mysite.com/section_with_underscores/
Жирным шрифтом является то, что мне нужно регулярное выражение для сопоставления для каждого сценария, так что в основном только первая часть после косой черты, независимо от того, сколько еще косых черт есть.
Я в полной растерянности, ценю помощь.
9 ответов
JavaScript с RegEx. Это будет соответствовать чему-либо после первой / пока мы не встретим другую /.
window.location.pathname.replace(/^\/([^\/]*).*$/, '$1');
Non-регулярное выражение.
var link = document.location.href.split('/');
alert(link[3]);
Разобрать URL в javascript можно с помощью официального регулярного выражения rfc2396:
var url = "http://www.domain.com/path/to/something?query#fragment";
var exp = url.split(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/);
Это даст вам:
["", "http:", "http", "//www.domain.com", "www.domain.com", "/path/to/something", "?query", "query", "#fragment", "fragment", ""]
Где вы можете, в вашем случае, легко найти ваш путь с помощью:
var firstPortion = exp[5].split("/")[1]
Попробуйте с:
var url = 'http://mysite.com/section-with-dashes/';
var section = url.match(/^http[s]?:\/\/.*?\/([a-zA-Z-_]+).*$/)[0];
Вот быстрый способ получить это в JavaScript
var urlPath = window.location.pathname.split("/");
if (urlPath.length > 1) {
var first_part = urlPath[1];
alert(first_part);
}
Мое регулярное выражение довольно плохо, поэтому я буду импровизировать с менее эффективным решением:P
// The first part is to ensure you can handle both URLs with the http:// and those without
x = window.location.href.split("http:\/\/")
x = x[x.length-1];
x = x.split("\/")[1]; //Result is in x
Если вы хотите получить то, что находится после первой косой черты (включительно), вы можете сделать так:
const linkUrl = pathname.replace(/^(.*\/)/, '$1')
как для
http://localhost:3000/dashboard/dataExploration
вернется
/dashboard/dataExploration
Обратите внимание, что это поможет вам изменить активный элемент ссылки в соответствии с путем к местоположению в реагирующем приложении, например :).
$url = 'http://mysite.com/section/subsection';
$path = parse_url($url, PHP_URL_PATH);
$components = explode('/', $path);
$first_part = $components[0];