URL格式

一、URL基本格式

一个完整的url包含方案、用户名、密码、主机名、端口、路径、参数、查询和片段,格式如下:

< scheme >://< user >:< password >@< host >:< port >/< path >;< params >?< query >#< frag >

例如:http://admin:password@192.168.1.1/html/index.html?test&bmg

1.scheme 方案

URL 的第一部分被称为方案(scheme), 说明了访问资源所使用的协议类型。 这部分通常就是 HTTP 协议(http://)

2.用户名和密码

访问网站使用的用户名和密码,两者之间使用“:”分隔;

3.主机(host)和端口(port)

主机可以是IP地址也可以是域名,URL的主机和端口组件告诉应用程序要从哪台机器装在资源。端口组件标识了服务器正在监听的网络端口,http的端口号默认是80,在URL中可以省略,比如http://www.baidu.com/等价于http://www.baidu.com:80/

4.路径(path)

URL的路径指明了需要访问的资源位于服务器的什么位置,比如http://192.168.2.34/pic/test.html这个URL的路径为/pic/test.html。

5.参数(params)

URL中还可以包含很多参数,这些参数之间用“;”分隔。HTTP的URL可以分成多个路径段,每个路径段都可以有自己的参数。如:
ftp://prep.ai.mit.edu/pub/gnu;type=d
http://www.joes-hardware.com/hammers;sale=false/index.html;graphics=true
第一个URL中包含一个参数type,其值为d;第二个URL的路径分成两段,第一段中的参数为sale,值为false,第二段中的参数为graphics,值为true;

6.查询字符串(query)

查询字符串用于给服务器传递参数,以减小所请求资源的类型范围。query字段以“?query”起始,而且可以包含不止一个参数,参数之间使用“&”分隔。如:
http://www.joes-hardware.com/inventory-check.cgi?item=12371&color=blue

7.片段(frag)

URL支持使用片段组件来表示一个资源内部的片段,比如URL可以指向HTML文档中的某个特定的文档或者小节。片段位于URL的最右边,使用“#”分隔。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用正则表达式校验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`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值