To get the Youtube VideoId from an Url in C# and VB.NET you can use the following snippet.
It matches these 18 type of Youtube Links (Sample Data):
Sample Input
Sample C#
using System.Linq; using System.Text.RegularExpressions; namespace de.fesslersoft.YoutubeRegexTest { internal static class Youtube { private const string YoutubeLinkRegex = "(?:.+?)?(?:\\/v\\/|watch\\/|\\?v=|\\&v=|youtu\\.be\\/|\\/v=|^youtu\\.be\\/)([a-zA-Z0-9_-]{11})+"; internal static string GetVideoId(string input) { var regex = new Regex(YoutubeLinkRegex, RegexOptions.Compiled); foreach (Match match in regex.Matches(input)) { //Console.WriteLine(match); foreach (var groupdata in match.Groups.Cast<Group>().Where(groupdata => !groupdata.ToString().StartsWith("http://") && !groupdata.ToString().StartsWith("https://") && !groupdata.ToString().StartsWith("youtu") && !groupdata.ToString().StartsWith("www."))) { return groupdata.ToString(); } } return string.Empty; } } }
Sample VB.NET
Imports System.Linq Imports System.Text.RegularExpressions Namespace de.fesslersoft.YoutubeRegexTest Friend NotInheritable Class Youtube Private Sub New() End Sub Private Const YoutubeLinkRegex As String = "(?:.+?)?(?:\/v\/|watch\/|\?v=|\&v=|youtu\.be\/|\/v=|^youtu\.be\/)([a-zA-Z0-9_-]{11})+" Friend Shared Function GetVideoId(input As String) As String Dim regex = New Regex(YoutubeLinkRegex, RegexOptions.Compiled) For Each match As Match In regex.Matches(input) For Each data As Group In match.Groups.Cast(Of Group)().Where(Function(groupdata) Not groupdata.ToString().StartsWith("http://") AndAlso Not groupdata.ToString().StartsWith("https://") AndAlso Not groupdata.ToString().StartsWith("youtu") AndAlso Not groupdata.ToString().StartsWith("www.")) Return data.ToString() Next Next Return String.Empty End Function End Class End Namespace
Output / Sample
var urlList = new List<String> { "http://youtu.be/AAAAAAAAA01", "http://www.youtube.com/embed/watch?feature=player_embedded&v=AAAAAAAAA02", "http://www.youtube.com/embed/watch?v=AAAAAAAAA03", "http://www.youtube.com/embed/v=AAAAAAAAA04", "http://www.youtube.com/watch?feature=player_embedded&v=AAAAAAAAA05", "http://www.youtube.com/watch?v=AAAAAAAAA06", "www.youtube.com/watch?v=AAAAAAAAA07", "www.youtu.be/AAAAAAAAA08", "youtu.be/AAAAAAAAA09", "youtube.com/watch?v=AAAAAAAAA10", "http://www.youtube.com/watch/AAAAAAAAA11", "http://www.youtube.com/v/AAAAAAAAA12", "http://www.youtube.com/v/AAAAAAAAA13", "http://www.youtube.com/watch?v=i-AAAAAAA14&feature=related", "http://www.youtube.com/attribution_link?u=/watch?v=AAAAAAAAA15&feature=share&a=9QlmP1yvjcllp0h3l0NwuA", "http://www.youtube.com/attribution_link?a=fF1CWYwxCQ4&u=/watch?v=AAAAAAAAA16&feature=em-uploademail", "http://www.youtube.com/attribution_link?a=fF1CWYwxCQ4&feature=em-uploademail&u=/watch?v=AAAAAAAAA17", "http://www.youtube.com/v/A-AAAAAAA18?fs=1&rel=0" }; foreach (var entry in urlList) { Console.WriteLine(Youtube.GetVideoId(entry)); } Console.Read();
will result in the follwing output:
A simpler but less matching solution can be found here: How to get the VideoID of a youtube video using Regex
RT @CodeSnippetsNET: Get the Youtube VideoId from Url in C# and #VB .NET http://t.co/DuaLWsAUsx #dev #dotnet #csharp
Cool, this is very helpful!
Thank you!
RT @CodeSnippetsNET: Get the Youtube VideoId from Url in C# and #VB .NET http://t.co/DuaLWsAUsx #dev #dotnet #csharp