Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android / Java: Check if url is valid youtube url

I want to check if an url is valid youtube url so that I can shown in view otherwise I will hide the view.

Is there any regular expression in Java that can help me to check if url is valid. Currently I am using this regex but I guess it's not the one I want:

String youTubeURl = "https://www.youtube.com/watch?v=Btr8uOU0BkI";
String pattern = "https?:\\/\\/(?:[0-9A-Z-]+\\.)?(?:youtu\\.be\\/|youtube\\.com\\S*[^\\w\\-\\s])([\\w\\-]{11})(?=[^\\w\\-]|$)(?![?=&+%\\w]*(?:['\"][^<>]*>|<\\/a>))[?=&+%\\w]*";
 if (!youTubeURl.isEmpty() && youTubeURl.matches(pattern)) {
              /// Valid youtube URL
  }
 else{
   // Not Valid youtube URL
}
like image 730
user1288005 Avatar asked Jun 04 '14 06:06

user1288005


4 Answers

This works for me.

public static boolean isYoutubeUrl(String youTubeURl)
{
       boolean success;
       String pattern = "^(http(s)?:\\/\\/)?((w){3}.)?youtu(be|.be)?(\\.com)?\\/.+";
       if (!youTubeURl.isEmpty() && youTubeURl.matches(pattern))
       {
           success = true;
       }
       else
       {
           // Not Valid youtube URL
           success = false;
       }
       return success;
  }

If you want to retrieve the Youtube videoId you can use the following function.

public static String getVideoIdFromYoutubeUrl(String youtubeUrl)
{
       /*
           Possibile Youtube urls.
           http://www.youtube.com/watch?v=WK0YhfKqdaI
           http://www.youtube.com/embed/WK0YhfKqdaI
           http://www.youtube.com/v/WK0YhfKqdaI
           http://www.youtube-nocookie.com/v/WK0YhfKqdaI?version=3&hl=en_US&rel=0
           http://www.youtube.com/watch?v=WK0YhfKqdaI
           http://www.youtube.com/watch?feature=player_embedded&v=WK0YhfKqdaI
           http://www.youtube.com/e/WK0YhfKqdaI
           http://youtu.be/WK0YhfKqdaI
        */
       String pattern = "(?<=watch\\?v=|/videos/|embed\\/|youtu.be\\/|\\/v\\/|\\/e\\/|watch\\?v%3D|watch\\?feature=player_embedded&v=|%2Fvideos%2F|embed%\u200C\u200B2F|youtu.be%2F|%2Fv%2F)[^#\\&\\?\\n]*";
       Pattern compiledPattern = Pattern.compile(pattern);
       //url is youtube url for which you want to extract the id.
       Matcher matcher = compiledPattern.matcher(youtubeUrl);
       if (matcher.find()) {
           return matcher.group();
       }
       return null;
}
like image 83
Biagio Pietro Capece Avatar answered Sep 29 '22 03:09

Biagio Pietro Capece


You should use

Patterns.WEB_URL.matcher(youTubeURl).matches()

It will return True if URL is valid and false if URL is invalid.

like image 36
X.Otano Avatar answered Sep 29 '22 03:09

X.Otano


Use android.webkit.URLUtil.isValidUrl(java.lang.String) to check if url is valid. And then you can check if url contains Youtube string.

Like

private boolean isValidUrl(String url) {

    if (url == null) {
        return false;
    }
    if (URLUtil.isValidUrl(url)) {
        // Check host of url if youtube exists
        Uri uri = Uri.parse(url);
        if ("www.youtube.com".equals(uri.getHost())) {
            return true;
        }
        // Other way You can check into url also like 
        //if (url.startsWith("https://www.youtube.com/")) {
            //return true;
        //}
    }
    // In other any case
    return false;
}
like image 35
Pankaj Kumar Avatar answered Sep 29 '22 03:09

Pankaj Kumar


In order to achieve what you want you should use this Regex like so:

private static final Pattern youtubePattern = Pattern.compile("^(http(s)?:\/\/)?((w){3}.)?youtu(be|.be)?(\.com)?\/.+");
private boolean isValid = youtubePattern.matcher(youtubeUrl).matches();

where youtubeUrl can be any URL of the following list:

  • http://youtu.be/t-ZRX8984sc
  • http://youtube.com/watch?v=iwGFalTRHDA
  • http://www.youtube.com/watch?v=t-ZRX8984sc
  • http://www.youtube.com/watch?v=iwGFalTRHDA&feature=related
  • http://www.youtube.com/embed/watch?feature=player_embedded&v=r5nB9u4jjy4
  • https://www.youtube.com/channel/UCDZkgJZDyUnqwB070OyP72g
  • youtube.com/n17B_uFF4cA
  • youtube.com/iwGFalTRHDA
  • http://youtu.be/n17B_uFF4cA
  • https://youtube.com/iwGFalTRHDA
  • https://youtube.com/channel/UCDZkgJZDyUnqwB070OyP72g

This regex can match any types of URLs related to youtube.com

like image 35
Roberto Osorio Mc Nulty Avatar answered Sep 29 '22 01:09

Roberto Osorio Mc Nulty