Check if an URL is valid or not using Regular Expression - GeeksforGeeks

11 Feb, 2021
Given a URL as a character string str of size N.The task is to check if the given URL is valid or not.Examples : 
Input : str = “https://www.geeksforgeeks.org/” Output : Yes Explanation : The above URL is a valid URL.Input : str = “https:// www.geeksforgeeks.org/” Output : No Explanation : Note that there is a space after https://, hence the URL is invalid.  
Approach : An approach using java.net.url class to validate a URL is discussed in the previous post. Here the idea is to use Regular Expression to validate a URL. 
Get the URL.
Create a regular expression to check the valid URL as mentioned below:
regex = “((http|https)://)(www.)?” + “[a-zA-Z0-9@:%._\\+~#?&//=]{2,256}\\.[a-z]” + “{2,6}\\b([-a-zA-Z0-9@:%._\\+~#?&//=]*)” 
The URL must start with either http or https and
then followed by :// and
then it must contain www. and
then followed by subdomain of length (2, 256) and
last part contains top level domain like .com, .org etc.
Match the given URL with the regular expression. In Java, this can be done by using Pattern.matcher().
Return true if the URL matches with the given regular expression, else return false.
Below is the implementation of the above approach: 
C++
Java
Python3
// C++ program to validate URL// using Regular Expression#include <iostream>#include <regex>using namespace std; // Function to validate URL// using regular expressionbool isValidURL(string url){   // Regex to check valid URL  const regex pattern("((http|https)://)(www.)?[a-zA-Z0-9@:%._\\+~#?&//=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%._\\+~#?&//=]*)");   // If the URL  // is empty return false  if (url.empty())  {     return false;  }   // Return true if the URL  // matched the ReGex  if(regex_match(url, pattern))  {    return true;  }  else  {    return false;  }} // Driver Codeint main(){  string url = "https://www.geeksforgeeks.org";   if (isValidURL(url))  {    cout << "YES";  }  else  {    cout << "NO";  }  return 0;} // This code is contributed by yuvraj_chandra
// Java program to check URL is valid or not// using Regular Expression import java.util.regex.*; class GFG {     // Function to validate URL    // using regular expression    public static boolean    isValidURL(String url)    {        // Regex to check valid URL        String regex = "((http|https)://)(www.)?"              + "[a-zA-Z0-9@:%._\\+~#?&//=]"              + "{2,256}\\.[a-z]"              + "{2,6}\\b([-a-zA-Z0-9@:%"              + "._\\+~#?&//=]*)";         // Compile the ReGex        Pattern p = Pattern.compile(regex);         // If the string is empty        // return false        if (url == null) {            return false;        }         // Find match between given string        // and regular expression        // using Pattern.matcher()        Matcher m = p.matcher(url);         // Return if the string        // matched the ReGex        return m.matches();    }     // Driver code    public static void main(String args[])    {        String url            = "https://www.geeksforgeeks.org";        if (isValidURL(url) == true) {            System.out.println("Yes");        }        else            System.out.println("NO");    }}
# Python3 program to check# URL is valid or not# using regular expressionimport re # Function to validate URL# using regular expressiondef isValidURL(str):     # Regex to check valid URL    regex = ("((http|https)://)(www.)?" +             "[a-zA-Z0-9@:%._\\+~#?&//=]" +             "{2,256}\\.[a-z]" +             "{2,6}\\b([-a-zA-Z0-9@:%" +             "._\\+~#?&//=]*)")         # Compile the ReGex    p = re.compile(regex)     # If the string is empty    # return false    if (str == None):        return False     # Return if the string    # matched the ReGex    if(re.search(p, str)):        return True    else:        return False # Driver code # Test Case 1:url = "https://www.geeksforgeeks.org" if(isValidURL(url) == True):    print("Yes")else:    print("No") # This code is contributed by avanitrachhadiya2155
Yes
 
Time Complexity: O (N) Auxiliary Space: O (1)
avanitrachhadiya2155
yuvraj_chandra
CPP-regex
java-regular-expression
Java-URL
python-regex
regular-expression
Pattern Searching
Strings
Strings
Pattern Searching
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Boyer Moore Algorithm for Pattern Searching
Minimize number of cuts required to break N length stick into N unit length sticks
String matching where one string contains wildcard characters
Check if a string contains uppercase, lowercase, special characters and numeric values
Search a Word in a 2D Grid of characters
Write a program to reverse an array or string
Reverse a string in Java
Longest Common Subsequence | DP-4
Write a program to print all permutations of a given string
C++ Data Types