正则校验url格式 代码
时间: 2023-10-22 21:03:30 浏览: 98
通过正则格式化url查询字符串实现代码
以下是使用正则表达式校验URL格式的示例代码:
```python
import re
def is_valid_url(url: str) -> bool:
regex = re.compile(
r'^https?://' # http:// 或 https:// 开头
r'(?:(?:[A-Z0-9_](?:[A-Z0-9_-]{0,61}[A-Z0-9_])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)|' # 域名部分
r'localhost|' # 或者是本地地址
r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' # 或者是IP地址
r'(?::\d+)?' # 端口号(可选)
r'(?:/?|[/?]\S+)$', re.IGNORECASE)
return bool(regex.match(url))
# 测试示例
print(is_valid_url('http://www.example.com')) # True
print(is_valid_url('https://example.com/path/to/page.html')) # True
print(is_valid_url('ftp://example.com/path/to/file.txt')) # False
print(is_valid_url('http://localhost:8080')) # True
print(is_valid_url('http://127.0.0.1')) # True
```
该函数使用了一个较为复杂的正则表达式,可以较为准确地校验URL的格式。其中,该正则表达式包含以下几个部分:
1. `^https?://`:以 `http://` 或 `https://` 开头。
2. `(?:...|...)`:表示两个或多个可选的匹配项。
3. `[A-Z0-9_](?:[A-Z0-9_-]{0,61}[A-Z0-9_])?\.`:匹配域名中的一级和多级子域名,例如 `www.`、`blog.` 等。
4. `(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)`:匹配顶级域名,例如 `.com`、`.co.uk` 等。
5. `localhost`:匹配本地地址。
6. `\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}`:匹配IP地址。
7. `(?::\d+)?`:匹配可选的端口号。
8. `(?:/?|[/?]\S+)$`:匹配可选的路径和查询参数。
如果URL符合以上规则,则返回 `True`,否则返回 `False`。
阅读全文