Ich möchte überprüfen, ob die Zeichenfolge spotify oder youtube oder eine ungültige URL ist. Das funktioniert, aber es scheint, es könnte einfacher gemacht werden. Wie kann ich es effizienter machen?So vereinfachen Sie das Testen einer Zeichenfolge gegen mehrere Regexes
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');
warum so kompliziert regex für 'youtube'? – rock321987
Ich würde es so lassen, wie es ist, Sie brauchen die Logik, um zu entscheiden, worauf sich die Regex bezieht. Entscheiden Sie sich für die einfachere Lösung und sparen Sie Zeit. – iSS
Wenn es nur für Validierungszwecke ist, verwenden Sie 'RegExp.prototype.test' anstelle von' String.prototype.match' und '/^(?: https?: \/\ /)? (?: www \.)? youtu (?: \. be \/| be \ .com) sollte genügen. –