📅  最后修改于: 2023-12-03 15:35:32.049000             🧑  作者: Mango
URL(Uniform Resource Locator)是定义互联网上资源位置的标准方式。在 Web 开发中,我们经常需要解析 URL,以获取其中的信息,如主机名、端口号、路径、查询参数等。本文将介绍如何使用 JS 节点解析 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 位置的片段标识符(以 #
开始)我们也可以手动解析 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
^
:匹配行的开始([^:]+)
:匹配不包含 :
的字符序列,即协议部分:\/*
:匹配 :
,并可选匹配 //
([^\/]+)
:匹配不包含 /
的字符序列,即主机名和端口号部分([^#]+)?
:匹配不包含 #
的字符序列,即路径和查询参数部分(.*)#(.*)
:匹配以 #
开始的片段标识符URL 解析是 Web 开发中的常见任务之一。JS 提供了 URL
对象来方便地解析 URL,也可以手动解析 URL,使用正则表达式或字符串操作等方式。无论采用哪种方式,都需要仔细研究 URL 格式的规范,以确保正确解析 URL 中的不同部分。