入力したyoutube urlから正規表現でVideo IDを取得しようとしています。以下は正規表現が無効です - 何も繰り返されません - Javascript
は、私が使用している正規表現です:
/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=|\?v=)([^#\&\?]*).*/
しかし、それは
Uncaught SyntaxError: Invalid regular expression:
//^.*(youtu.be/|v/|u/w/|embed/|watch?v=|&v=|?v=)([^#&?]*).*//
: Nothing to repeat
なぜとして戻ってきますの?以下は
私のコードです:
function PreviewVideo() {
var self = this;
this.links = $(".videoPreview");
this.bindEvents = function() {
self.links.on("click", self.fireModal);
};
this.getYoutubeId = function (url) {
var regExp = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=|\?v=)([^#\&\?]*).*/;
var match = url.match(regExp);
if (match && match[2].length == 11) {
return match[2];
} else {
return false;
}
};
this.fireModal = function (e) {
e.preventDefault;
var $this = $(this);
var videoField = $this.data("video");
var videoURL = $(videoField).val();
if (videoURL === "") {
$("body").append(UI.toast({level: "danger", time: 5000, html: "<h4>No video URL found</h4>", dismissable: true, position: "top-right"}));
} else {
var videoID = self.getYoutubeId(videoURL);
if (videoID) {
UI.modal({title: "Video preview", body: '<iframe width="560" height="315" src="//www.youtube.com/embed/' + videoID + '" frameborder="0" allowfullscreen></iframe>'})
} else {
$("body").append(UI.toast({level: "danger", time: 5000, html: "<h4>Invalid URL</h4>", dismissable: true, position: "top-right"}));
}
}
};
this.bindEvents();
}
youtube.be'は、正規表現の終わりとみなされ、 '/' '後。あなたはそれをエスケープする必要があります。 –
@FabianKlötzl:それはエスケープされ、コードは正しくマークアップされていませんでした。 –
[Javascript REGEX:URLからYouTube動画IDを取得する方法は?](http://stackoverflow.com/questions/3452546/javascript-regex-how-to-get-youtube-video-id-from-url ) –