使用Regex解析URI

时间:2015-04-29 01:44:30

标签: javascript jquery regex url uri

我目前正在使用Modenizr根据自己选择的设备确定为用户提供服务的链接。因此,如果他们正在使用移动设备,我想返回一个URI,如果没有,那么只需返回传统的URL。

URI: spotify:album:1jcYwZsN7JEve9xsq9BuUX

网址 https://open.spotify.com/album/1jcYwZsN7JEve9xsq9BuUX

现在我使用slice()检索URI的最后22个字符。虽然它有效但我希望在URI超过上述字符数量的情况下通过正则表达式解析字符串。在URI的第二个冒号之后获取字符串的最佳方法是什么?

$(".spotify").attr("href", function(index, value) {
  if (Modernizr.touch) {
    return value
  } else {
    return "https://open.spotify.com/album/" + value.slice(-22);
  }
});

2 个答案:

答案 0 :(得分:1)

我希望使用split这样的东西。

var url = 'spotify:album:1jcYwZsN7JEve9xsq9BuUX'.split(':');    
var part = url[url.length-1];
// alert(part);

return "https://open.spotify.com/album/" + part;

答案 1 :(得分:0)

正则表达式适用于此任务,因为它非常简单,这里的RegEx支持尽可能多的:并且仍然有效

/[\w\:]*\:(\w+)/

工作原理

  

[\w\:]*将获得所有单词字符(字母,数字,下划线)和冒号

     

\:基本上会告诉前面的事情停在冒号。默认情况下,正则表达式是贪婪的,这意味着它将获得最后一个冒号

     

(\w+)将选择所有单词字符并将其存储在一个组中,以便我们可以访问它

使用它:

var string = 'spotify:album:1jcYwZsN7JEve9xsq9BuUX',
    parseduri = string.match(/[\w\:]*\:(\w+)/)[1];

parseduri是结果

然后你最终可以把它结合起来:

var url = 'https://open.spotify.com/album/'+parseduri;