2016-01-24 222 views
0

我需要創建一個函數來檢查字符串是否是Spotify URL。我做了一個簡單的if語句來檢查字符串是否包含Spotify URL的一部分,它的工作原理,但它是廢話。有人可以讓我更好地使用正則表達式或其他方法。檢查字符串是否是Spotify URL

if (input.indexOf('spotify:') > -1 || input.indexOf('spotify.com') > -1) { 
    console.log('url'); 
} 

Spotify的網址進來這三種形式:

https://play.spotify.com/user/spotifydiscover/playlist/0vL3R9wDeAwmXTTuRATa14 
https://open.spotify.com/track/1TZ3z6TBztuY0TLUlJZ8R7 
spotify:track:1TZ3z6TBztuY0TLUlJZ8R7 
+0

你想知道,如果URL是一首曲目/專輯/藝術家嗎?或只是一個鏈接到spotify.com? –

+0

感謝您的回答。通緝只是第一部分,但很高興知道它是哪一個。 – mhlavacka

+0

更新了我的答案,展示瞭如何抓取網址段。 –

回答

6
/^(spotify:|https://[a-z]+\.spotify\.com/)/ 

http://www.regexr.com/3cl88

通過適當的JS逃逸,因爲在相當長的一段斜線該再次:

var url = 'https://open.spotify.com/track/1TZ3z6TBztuY0TLUlJZ8R7'; 
console.log(/^(spotify:|https:\/\/[a-z]+\.spotify\.com\/)/.test(url)); 
// Outputs 'true' 
2

匹配:

var input = 'https://play.spotify.com/user/spotifydiscover/playlist/0vL3R9wDeAwmXTTuRATa14'; 
if(/\.spotify\.com/.test(input)) 
{ 
    // contains spotify 
} 
+0

嘗試我的字符串:「http://example.com/this.is.not.spotify.com.html」 – Gavriel

+0

請注意。 (點)匹配任何單個字符。這也匹配你的正則表達式:「-spotify-com」 –

1

要測試的網址與openplay使用開始:

> var url = 'https://play.spotify.com/user/spotifydiscover/playlist/0vL3R9wDeAwmXTTuRATa14'; 
> var re = /((open|play)\.spotify\.com\/)/; 
> console.log(re.test(url)); 
< true 

使用match()可以檢索URL的格式。

> console.log(url.match(re)); 
< ["play.spotify.com/", "play.spotify.com/", "play"] 

或者:

> console.log(url.match(re)[2]); 
< "play"