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++
// C++ program to validate URL // using Regular Expression #include <iostream> #include <regex> using namespace std; // Function to validate URL // using regular expression bool 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 Code int main() { if (isValidURL(url)) { cout << "YES" ; } else { cout << "NO" ; } return 0; } // This code is contributed by yuvraj_chandra |
Java
// 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 if (isValidURL(url) == true ) { System.out.println( "Yes" ); } else System.out.println( "NO" ); } } |
Python3
# Python3 program to check # URL is valid or not # using regular expression import re # Function to validate URL # using regular expression def 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: if (isValidURL(url) = = True ): print ( "Yes" ) else : print ( "No" ) # This code is contributed by avanitrachhadiya2155 |
Yes
Time Complexity: O (N)
Auxiliary Space: O (1)
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.