📜  url 解析器 js 节点 - Javascript (1)

📅  最后修改于: 2023-12-03 15:35:32.049000             🧑  作者: Mango

URL 解析器 JS 节点

URL(Uniform Resource Locator)是定义互联网上资源位置的标准方式。在 Web 开发中,我们经常需要解析 URL,以获取其中的信息,如主机名、端口号、路径、查询参数等。本文将介绍如何使用 JS 节点解析 URL。

1. URL 对象

JS 中有一个内置对象 URL,用于解析 URL。可以通过实例化该对象来获取 URL 的不同部分。例如:

const url = new URL('https://www.example.com:8080/path?arg1=value1&arg2=value2');
console.log(url.host); // 输出:www.example.com:8080
console.log(url.pathname); // 输出:/path
console.log(url.searchParams.get('arg1')); // 输出:value1
属性说明:
  • host:主机名和端口号,包括 :
  • hostname:主机名
  • port:端口号,如果没有指定,则该属性返回一个空字符串
  • pathname:路径名(不包括查询参数)
  • search:查询字符串(以 ? 开始)
  • searchParams:查询参数列表对象
  • hash:URL 位置的片段标识符(以 # 开始)

2. 解析 URL

我们也可以手动解析 URL,使用正则表达式或字符串操作等方式。例如:

const url = 'https://www.example.com:8080/path?arg1=value1&arg2=value2';
const match = url.match(/^([^:]+):\/*([^\/]+)([^#]+)?(.*)#(.*)/);
console.log(match[1]); // 输出:https
console.log(match[2]); // 输出:www.example.com:8080
console.log(match[3]); // 输出:/path?arg1=value1&arg2=value2
console.log(match[4]); // 输出:/path
console.log(match[5]); // 输出:arg1=value1&arg2=value2
匹配说明:
  • ^:匹配行的开始
  • ([^:]+):匹配不包含 : 的字符序列,即协议部分
  • :\/*:匹配 :,并可选匹配 //
  • ([^\/]+):匹配不包含 / 的字符序列,即主机名和端口号部分
  • ([^#]+)?:匹配不包含 # 的字符序列,即路径和查询参数部分
  • (.*)#(.*):匹配以 # 开始的片段标识符

3. 总结

URL 解析是 Web 开发中的常见任务之一。JS 提供了 URL 对象来方便地解析 URL,也可以手动解析 URL,使用正则表达式或字符串操作等方式。无论采用哪种方式,都需要仔细研究 URL 格式的规范,以确保正确解析 URL 中的不同部分。