使用indexof()来查找路径的不一致值

时间:2014-08-08 09:36:09

标签: javascript

www.google.com/page/2

如果路径如上所述很容易,我们可以使用

path.substring(10, path.length);

但如果网址是这样的话

www.google.com/page/2
www.google.com/page/233
www.google.com/page/2/more/here/

如何获取页码?我的意思是2。

4 个答案:

答案 0 :(得分:2)

也许尝试使用regular expression。对于String.match()

你可以像这样使用它:

"www.google.com/page/233/more/here?userid=913".match(/\d+/g);
// returns an array with every match:
["233","913"]

// In case you directly want your answer, you can just append the index:
"www.google.com/page/233/more/here?userid=913".match(/\d+/g)[0];
"233"

两个包装/是表达式的分隔符,\d选择每个数字,+表示它将匹配每个出现的数字,大于一个(所以它匹配12332512,但没有空字符串)。最后,g最后是一个修饰符,它将执行global search - 但它不一定需要,因为你只需要第一次出现。

答案 1 :(得分:1)

不使用正则表达式

str = 'www.google.com/page/2/userId/433'; // (you can put any page number you want instead of 2)

pageNumber = str.split('/')[2];
alert(pageNumber);

它会将字符串剪切成一个数组,用于每个' /'有,[2]我们得到第二部分,这是' page /'之后的所有内容。但在下一个' /'之前。

就目前情况而言,我认为我的解决方案是最好的,因为如果您的网址变为www.google.com/page/2/index/3' ;,之前发布的所有正则表达式打印3或2和3,而我将始终打印页面ID。 但我确信有可能做出一个很好的正则表达式来完成这项工作。

答案 2 :(得分:0)

使用一点正则表达式:

var url = 'www.google.com/page/2/more/here/'

var match = url.match(/^.+\/.+\/([0-9]+)/);

alert(match[1]);

令人兴奋的小提琴:http://jsfiddle.net/Grimdotdotdot/f2qot2q3/

答案 3 :(得分:-1)

var parts = path.split('/');
for(var i=0; i<parts.length; i++) {
   if(parts[i] == 'page'){
      alert(parts[i+1]);
   }
}