在URL中获取斜杠后的第一个单词的正则表达式

22

我需要在JavaScript中获取URL中斜杠后的第一个单词,我认为使用正则表达式是最理想的。

这里是可能出现的URL的示例:

加粗部分是每种情况下我需要正则表达式匹配的内容,即第一个斜杠后面的部分,无论有多少个进一步的斜杠。

我完全不知道该怎么做,请帮忙。


4
在你的例子中,斜杠后的第一个单词是“mysite”,这是技术性的术语。你需要的是URL路径组件的第一部分。 - Marc B
9个回答

48

使用正则表达式的JavaScript。这将匹配第一个 / 后的任何内容,直到我们遇到另一个 /。

window.location.pathname.replace(/^\/([^\/]*).*$/, '$1');


25

非正则表达式。

var link = document.location.href.split('/');
alert(link[3]);

11

使用官方的rfc2396正则表达式可以在JavaScript中解析URL:

var url = "http://www.example.com/path/to/something?query#fragment";
var exp = url.split(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/);
这将给你:
["", "http:", "http", "//www.example.com", "www.example.com", "/path/to/something", "?query", "query", "#fragment", "fragment", ""]

在您的情况下,您可以很容易地使用以下代码检索路径:

const path = exp[5];

因此,在使用路径后的第一个单词是:

const rootPath = path.split('/')[1];

你为什么要添加“.split("/")[1]”呢? - Mau
1
因为我写这个的时候还很年轻...不,实际上这是为了获取根路径(正如问题的作者所问),我更新了答案。 - Flavien Volken

3

请尝试以下操作:

var url = 'http://mysite.com/section-with-dashes/';
var section = url.match(/^http[s]?:\/\/.*?\/([a-zA-Z-_]+).*$/)[0];

2

下面是在JavaScript中快速获取它的方法:

var urlPath = window.location.pathname.split("/");
if (urlPath.length > 1) {
  var first_part = urlPath[1];
  alert(first_part); 
}

1
我的正则表达式水平不太好,所以我会用一个效率较低的解决方案 improvisation :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

0
string.split('://')[1].split('/')[1];

3
欢迎来到 Stack Overflow!请阅读 [回答] 并 [编辑] 您的回答,以包含有关为什么此代码实际上可以解决手头问题的解释。始终记得,您不仅要解决问题,还要教育原帖作者和任何未来的读者。 - Adriaan

0
$url = 'http://mysite.com/section/subsection';

$path = parse_url($url, PHP_URL_PATH);

$components = explode('/', $path);

$first_part = $components[0];

4
出于某些原因,我认为 JavaScript 解释器不会喜欢你的 PHP 解决方案。 - Jim Mischel
1
眨了几次眼睛后,你可能是对的...但由于有很多人认为Javascript可以在服务器上执行,我可以假装PHP可以在客户端执行 :) - Marc B

0
如果您想获取第一个正斜杠(包括在内)后面的内容,可以这样做:
const linkUrl = pathname.replace(/^(.*\/)/, '$1')

例如对于 http://localhost:3000/dashboard/dataExploration,将返回 /dashboard/dataExploration

请注意,这将帮助您根据 React 应用程序中的位置路径名更改活动链接元素 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接