如何用正则验证 URL

6 min read

要用正则表达式验证URL,可以使用如下的正则表达式:
^((https?|ftp|file)://)?([\da-z.-]+).([a-z.]{2,6})([/\w .-])/?$

该正则表达式可以验证包含http、https、ftp和file协议的URL,并且可以验证一些特殊字符。以下是对正则表达式的解释:

^:表示行的开始
((https?|ftp|file)://):表示http、https、ftp或file协议,可以有也可以没有。
([\da-z.-]+): 表示URL的域名部分,可以包含小写字母、数字、点和连字符。
([a-z.]{2,6}):表示顶级域名,可以是2到6个小写字母或点。
([/\w .-]):表示路径部分,可以包含斜杠、字母、数字、空格、点和连字符。
/?$:表示路径后面可以有一个斜杠,并且行结束。

你可以使用这个正则表达式来验证URL是否合法。以下是一些示例:

import re

def validate_url(url):
pattern = re.compile(r'^((https?|ftp|file)://)?([\da-z.-]+).([a-z.]{2,6})([/\w .-])/?$')
result = re.match(pattern, url)
if result:
return True
else:
return False

print(validate_url("http://www.example.com")) # True
print(validate_url("https://google.com")) # True
print(validate_url("ftp://ftp.example.com")) # True
print(validate_url("file:/example/test.jpg")) # True
print(validate_url("htp://example.com")) # False