Javascript jQuery解析url路径的一部分

Javascript jQuery解析url路径的一部分,javascript,jquery,html,regex,Javascript,Jquery,Html,Regex,我需要解析长URL并将变量(类别)设置为路径中的一个/folders/ 例如,一个url http://example.com/community/home/whatever.html 我需要将变量设置为该url中/home/之后的任何文件夹路径 我用它来提醒我在/community/之后会发生什么,但是url变成了NaN,链接不起作用。我想我走错了方向 if ($(this.href*='http://example.com/community/')){ var category = u

我需要解析长URL并将变量(类别)设置为路径中的一个
/folders/

例如,一个url

http://example.com/community/home/whatever.html

我需要将变量设置为该url中
/home/
之后的任何文件夹路径

我用它来提醒我在/community/之后会发生什么,但是url变成了NaN,链接不起作用。我想我走错了方向

if ($(this.href*='http://example.com/community/')){

  var category = url.split("community/");

  alert(category[category.length - 1]);

}
想法


TIA。

您可以使用正则表达式获取“/community/”之后的所有内容:

var url = "http://www.example.com/community/whatever";
var category = "";
var matches = url.match(/\/community\/(.*)$/);
if (matches) {
    category = matches[1];   // "whatever"
}
此处的工作示例:

如果您只想在社区之后获取下一个路径段,而在该段之后不获取任何内容,则可以使用以下方法:

var url = "http://www.example.com/community/whatever/more";
var category = "";
var matches = url.match(/\/community\/([^\/]+)/);
if (matches) {
    category = matches[1];    // "whatever"
} else {
    // no match for the category
}

此处的工作示例:http://jsfiddle.net/jfriend00/vrvbT/

当你做
这个时。href*=
你在做乘法,这就是为什么你得到的不是一个数字。它将
this.href
乘以字符串,并将其分配给
href

如果要测试url是否以该字符串开头,可以这样做,无需jQuery:

var start = 'http://example.com/community/';
if (url.substring(0, start.length) === start)){
  var category = url.split("community/");
  var lastPart = category[category.length - 1];
  return lastPart.split("/")[0];
}

很抱歉,我需要将变量设置为该url中/community/之后的任何文件夹路径。我根本没有得到
this.href*=
的东西。这是什么意思呢?jquery选择器,如果这个href属性如OP所要求的那样包含,他就有了做这件事的想法。所以我们必须给他的想法一个实现方案。我认为
$(this.href*='http://example.com/community/“)
假定为
$(“[href*=”http://example.com/community/“]”)
/我shrugs@ben:只需按“/”再次拆分并返回第一个结果。看看我的答案。这是可行的,但如果我想返回任何东西,而不是任何东西/asdf:–ben 2分钟前edit@ben-我使用第二个选项更新了我的答案,以仅获取“whatever”部分。只有当href中的字符串与该模式匹配时,这才有助于我这样做,但我有了一些设置category=“不匹配”,然后在匹配时覆盖它。谢谢伙计!@ben-如果你想在不匹配时执行代码,那么在if的末尾加上一个else。