I'm busy trying to create two regular expressions to filter the id from youtube and vimeo video's. I've already got the following expressions;
YouTube: (youtube.com/)(.*)v=([a-zA-Z0-9-_]+)
Vimeo: vimeo.com/([0-9]+)$
As i explained below there are 2 types of urls matched by the regular expressions i already created. Several other types of urls from Vimeo and YouTube aren't coverd by the expressions. What i prefer most is that all this can be covered in two expressions. One for all Vimeo video's and one for all youtube video's. I've been busy experimenting with some different expressions, but no succes so far. I'm still trying to master regular expressions, so i hope i'm on the right way and somebody can help me out! If more information is required, please let me know!
VIMEO URLs NOT MATCHED:
http://vimeo.com/channels/hd#11384488
http://vimeo.com/groups/brooklynbands/videos/7906210
http://vimeo.com/staffpicks#13561592
YOUTUBE URLs NOT MATCHED
http://www.youtube.com/user/username#p/a/u/1/bpJQZm_hkTE
http://www.youtube.com/v/bpJQZm_hkTE
http://youtu.be/bpJQZm_hkTE
URLs Matched
http://www.youtube.com/watch?v=bWTyFIYPtYU&feature=popular
http://vimeo.com/834881
The idea is to match all the url's mentioned above with two regular expressions. One for vimeo and one for youtube.
UPDATE AFTER ANSWER Sedith:
This is how my expressions look now
public static readonly Regex VimeoVideoRegex = new Regex(@"vimeo.com/(?:.*#|.*/videos/)?([0-9]+)", RegexOptions.IgnoreCase | RegexOptions.Multiline);
public static readonly Regex YoutubeVideoRegex = new Regex(@"youtu(?:.be|be.com)/(?:(.*)v(/|=)|(.*/)?)([a-zA-Z0-9-_]+)", RegexOptions.IgnoreCase);
And in code i have
var youtubeMatch = url.match(YoutubeVideoRegex );
var vimeoMatch = url.match(VimeoVideoRegex );
var youtubeIndex = (youtubeMatch.length - 1)
var youtubeId = youtubeMatch[youtubeIndex];
As you can see i now need to find the index where the videoId is in the array with matches returned from the regex. But i want it to only return the id itselfs, so i don't need to modify the code when youtube of vimeo ever decide to change there urls. Any tips on this?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…