Я хочу проверить, является ли строка точным, или URL-адрес YouTube или неверный. Это работает, но, похоже, это можно сделать проще. Как я могу сделать его более эффективным?Как упростить тестирование строки для нескольких регулярных выражений
String.prototype.spotifyUrl = function() {
return this.match(/^(spotify:|https:\/\/[a-z]+\.spotify\.com\/)/);
}
String.prototype.youtubeUrl = function() {
return this.match(/^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/);
}
function validateUrl (url) {
if (url.spotifyUrl()) {
alert('spotify');
}
else if (url.youtubeUrl()) {
alert('youtube');
}
else {
alert('invalid url');
}
};
validateUrl('https://open.spotify.com/track/3JiockjOTd8m2VGcTGkmew');
почему так сложное регулярное выражение для 'youtube'? – rock321987
Я бы оставил это как есть, вам нужна логика, чтобы решить, что имеет в виду регулярное выражение. Пойдите для более простого решения и сэкономить ваше время. – iSS
, если он предназначен только для проверки, используйте 'RegExp.prototype.test' вместо' String.prototype.match' и '/^(?: https?: \/\ /)? (?: www \.)? youtu (?: \. be \/| be \ .com) \ // 'должно быть достаточно. –