2016-01-24 3 views
0

Мне нужно создать функцию, чтобы проверить, является ли строка URL-адресом Spotify. Я сделал простой оператор if, чтобы проверить, содержит ли строка часть URL-адреса Spotify, но работает, но это дерьмо. Может ли кто-нибудь показать мне лучший подход с Regex или что-то еще.Проверьте, является ли строка Spotify URL

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

Spotify URL-адрес приходит в этих трех формах:

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

Вы хотите знать, если URL для трека/альбома/исполнителя? Или просто ссылку на spotify.com? –

+0

Спасибо за ваш ответ. Хотела только первая часть, но было бы здорово узнать, для кого это тоже. – mhlavacka

+0

Обновлен мой ответ, показывающий, как захватить сегменты URL. –

ответ

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

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

При правильном JS побег, поскольку есть довольно некоторые косые черты вRe:

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

Matching:

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

Чтобы проверить, если URL начинается с open или play использования:

> 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" 
Смежные вопросы