我目前正在使用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);
}
});
答案 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;