URL regex PHP

URL

URL regular expressions can be used to verify if a string has a valid URL format as well as to extract an URL from a string.

URL regex that starts with HTTP or HTTPS

HTTP and HTTPS URLs that start with protocol can be validated using the following regular expression

"/^https?:\\/\\/(?:www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b(?:[-a-zA-Z0-9()@:%_\\+.~#?&\\/=]*)$/"

Test it!
/^https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_\+.~#?&\/=]*)$/

True

False

Enter a text in the input above to see the result

Example code in Python:

// Validate if a string is a valid URL format
$url_validation_regex = "/^https?:\\/\\/(?:www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b(?:[-a-zA-Z0-9()@:%_\\+.~#?&\\/=]*)$/"; 
echo preg_match($url_validation_regex, 'https://uibakery.io'); // returns 1

// Extract URL from a string
$extract_url_pattern = "/https?:\\/\\/(?:www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b(?:[-a-zA-Z0-9()@:%_\\+.~#?&\\/=]*)/";
$string_to_match = 'You can view more details at https://uibakery.io or just ping via email.';
preg_match_all($extract_url_pattern, $string_to_match, $matches);
print_r($matches[0])// matches[0] is ['https://uibakery.io']

URL regex that doesn’t start with HTTP or HTTPS

The regular expression to validate URL without protocol is very similar:

"/^[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b(?:[-a-zA-Z0-9()@:%_\\+.~#?&\\/=]*)$/"

Test it!
/^[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_\+.~#?&\/=]*)$/

True

False

Enter a text in the input above to see the result

Example code in Python:

// Validate if a string is a valid URL format without protocol
$url_validation_regex = "/^[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b(?:[-a-zA-Z0-9()@:%_\\+.~#?&\\/=]*)$/"; 
echo preg_match($url_validation_regex, 'uibakery.io'); // returns 1

// Extract URL without protocol from a string
$extract_url_pattern = "/[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b(?:[-a-zA-Z0-9()@:%_\\+.~#?&\\/=]*)/"; 
$string_to_match = 'You can view more details at uibakery.io or just ping via email.';
preg_match_all($extract_url_pattern, $string_to_match, $matches);
print_r($matches[0])// matches[0] is ['uibakery.io']

Test it!

True

False

Enter a text in the input above to see the result

Notes on URL validation

The above-mentioned regular expressions only cover the most commonly used types of URLs with domain names. If you have some more complex cases you might need a different solution.