2013-10-20 28 views
0


如果給定的URI是YouTube網站的頁面,我需要檢查C#。Regex C# - 與任何YouTube.com URI匹配

string theUri = "http://www.youtube.com/watch?v=B4N_CliHGUk&feature=player_embedded"; 
bool isYoutube = Regex.IsMatch(theUri.ToString(), @"/https?:\/\/(www\.)?(youtube\.com|youtu\.be|youtube-nocookie\.com).*/i"); 

正則表達式並不複雜,它應該沒有問題的工作:

https?:\/\/(?:www\.)?(?:youtube\.com|youtu\.be|youtube-nocookie\.com).+ 

Regular expression visualization

Debuggex Demo

但它不工作; isYouTube布爾是錯誤的這樣一個簡單的URI http://www.youtube.com/watch?v=KeC4NKDVl70&feature=player_embedded

我在哪裏錯了?謝謝

回答

3
var youtubeHosts=new string[]{"youtube","youtube-nocookie","youtu.be"}; 
Uri uri=new Uri(path); 
bool isValid=youtubeHosts.Any(x=>uri.Host==x); 
+0

謝謝,我會嘗試這種方式:) –

+0

這些youtubeHosts工作:'VAR youtubeHosts =新的String [] { 「youtube.com」, 「www.youtube.com」,「youtube- nocookie.com「,」www.youtube-nocookie.com「,」youtu.be「,」www.youtu.be「};'謝謝:) –