当前位置: 首页 > 编程日记 > 正文

取出url中的字符_如何在JavaScript中解析URL:例如主机名,路径名,查询,哈希?...

582257234e3cdbb12576f22398d6fbdf.png

统一资源定位符(缩写URL)是对Web资源(网页,图像,文件)的引用。URL指定资源位置和检索资源的机制(http,ftp,mailto)。

例如,这是此博客文章的URL:

ba98b98d323e6912b042ce275103942a.png

通常,您需要访问URL的特定组件。这些可能是主机名(例如dmitripavlutin.com)或路径名(例如/parse-url-javascript)。

URL()构造器是访问URL组件的便捷解析器。

在本文中,我将向您展示URL的结构及其主要组成部分。

然后,我将描述如何使用URL()构造函数轻松选择URL的组件,例如主机名,路径名,查询或哈希。

1. URL结构

一幅价值一千个字的图片。在没有太多文字描述的情况下,您可以在下图中找到URL的主要组成部分:

6c8ba021eb00e3d4b6be552de616da9f.png

2. URL()构造函数

URL()是constuctor功能,可以让一个URL的组成部分的解析:

2d6c5809e7d7a7756da3321dd0141e31.png

relativeOrAbsolute参数可以是绝对URL或相对URL。如果第一个参数是相对的,则第二个参数absoluteBase是强制性的,并且必须是一个绝对URL,它是第一个参数的基础。

例如,让我们URL()使用绝对URL进行初始化:

ebee6b02561f15fd136786ed8d1a82e4.png

或结合相对网址和绝对网址:

87915cec515c0d7b013feff23a5af56f.png

实例的href属性URL()返回整个URL字符串。

创建后URL()的实例,您可以访问提出的任何URL组件上一张图片。供参考,这是URL()实例接口:

d413ee456e416a3d20e7d01893ffb9f2.png

USVString当在JavaScript中返回时,其中type映射为字符串。

3.查询字符串

url.search属性访问前缀为的URL的查询字符串?

077956c354c0c21cad810b3e5394fd06.png

如果查询字符串丢失,则url.search求值为空字符串''

010f7ee195ee621dfa614c0f18851f35.png

3.1解析查询字符串

与访问原始查询字符串相比,访问查询参数更方便。

选择查询参数的一种简单方法是赋予url.searchParams属性。此属性保存URLSearchParams的实例。

URLSearchParams对象提供了大量的方法(如get(param)has(param))来访问查询字符串参数。

让我们看一个例子:

4d1a152a0ca7f946b58a316219f7a016.png

url.searchParams.get('message')返回message查询参数— 的值'hello'

但是,访问不存在的参数的结果url.searchParams.get('missing')null

4. 主机名

url.hostname 属性包含URL的主机名:

780a569043f8a07088d90ced6d700edb.png

5. 路径名

url.pathname 属性访问URL的路径名:

fda05e193613313b96308530f330033d.png

如果URL没有路径,则该url.pathname属性返回一个斜杠字符/

14c063a4b7e08379006d5c9b321514ca.png

6. 哈希

最后,可以使用url.hash属性访问哈希:

0c23b5542f70861378378e505e57bd01.png

如果网址中的哈希值丢失,则url.hash计算为空字符串''

ad93385fed9f1a006979458ce0b91de8.png

7. URL验证

new URL()构造函数创建一个实例,它的副作用,这也验证了正确的URL。如果URL值无效,TypeError则引发a。

例如,http ://example.com由于URL后面有空格,所以是无效的URL http

让我们使用这个无效的URL来初始化解析器:

4da17735b96eb0f1b92440dfa1d8e043.png

'http ://example.com'如预期的那样,因为是无效的URL new URL('http ://example.com')引发TypeError

8. URL操作

除了访问URL成分,性质一样searchhostnamepathnamehash是可写的-因此你可以操纵的URL。

例如,让我们将现有URL的主机名从修改red.comblue.io

d37be84aabb6fafc584f765f07458150.png

请注意,实例的only originsearchParams属性URL()是只读的。其他所有文件都是可写的,并在更改它们时修改URL。

9.总结

URL()构造函数是很方便的解析(和验证)在JavaScript中的URL。

new URL(relativeOrAbsolute [, absoluteBase])接受绝对或相对URL作为第一个参数。如果第一个参数是相对的,则必须将第二个参数表示为提供第一个参数基础的替代URL。

创建URL()实例后,您可以轻松访问最常见的URL组件,例如:

  • url.search 用于原始查询字符串
  • url.searchParams用于URLSearchParams选择查询字符串参数的实例
  • url.hostname 访问主机名
  • url.pathname 读取路径名
  • url.hash 确定哈希值

您最喜欢使用JavaScript解析URL的工具是什么?

原著作者:德米特里·帕夫鲁汀

文章来源:国外

原著链接:

Dmitri Pavlutin Blog​dmitripavlutin.com
2537fcc43c29b7818fad7ca59f7faa81.png

PS:原著文章内容为英文版本,建议使用360极速浏览器进行翻译阅读。

相关文章:

SQL Server 2008中的Pivot和UnPivot

SQL Server 2008中SQL应用系列--目录索引 今天给新成员讲解PIVOT 和 UNPIVOT示例,顺便整理了一下其用法。这是自SQL Server 2005起提供的新功能。 官方示例:http://msdn.microsoft.com/zh-cn/library/ms177410%28vsql.105%29.aspx 首先看PIVOT示例&#…

leetcode python 032 识别最长合法括号

# 给定一个只包含字符(和)的字符串,# 找到最长的有效(格式良好)括号子字符串的长度。# 对于“(()”,最长的有效括号子串是“()”,其长…

Android窗口管理服务WindowManagerService计算Activity窗口大小的过程分析

在Android系统中,Activity窗口的大小是由WindowManagerService服务来计算的。WindowManagerService服务会根据屏幕及其装饰区的大小来决定Activity窗口的大小。一个Activity窗口只有知道自己的大小之后,才能对它里面的UI元素进行测量、布局以及绘制。本文…

pcl需要注意的编译问题

pcl需要注意的编译问题 不要在头文件里 using namespace pcl 这会导致编译错误,而且根本分析不到错误在哪 不要在编译选项 里加 -marchnative 这个是让编译器根据你当前的cpu类型进行特定的编译优化, 例如 set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdc11 -march…

linux python版本_linux下更新Python版本并修改默认版本

linux下更新Python版本并修改默认版本,有需要的朋友可以参考下。很多情况下拿到的服务器python版本很低,需要自己动手更改默认python版本1、从官网下载python安装包(这个版本可以是任意版本3.3 2.7 2.6等等)wget http://python.org/ftp/python/2.7/Pytho…

基于HTML5的Google水下搜索

这次愚人节的时候,Google推出了水下搜索,当然,这只是一个愚人的小把戏,不过效果非常不错,进入页面后,第一眼是一个水面的效果,水下的鲨鱼在游来游去,然后Google logo和搜索框从水面上…

windows下rpc框架thrift的环境配置

windows下rpc框架thrift的环境配置 引用链接: https://www.cnblogs.com/49er/p/7193829.html 最近在弄windows下 的Facebook的rpc 框架 thrift , 网上东西看了很多, 但是大都不能一篇到位, 这里总结了一下, 也记一下自己遇到的问题和解决的方法 这里把我在实际过程中遇见的问…

CentOS 6.3 安装 samba 共享

PHP环境在linux下,但是开发的时候用的是windows,于是我用了samba将linux的一个目录共享,然后在windows上做映射,这样就可以直接在windows下编辑linux上的文件了 首先,安装samba软件,我采用的是yum安装&…

微信小程序 长按图片不出现菜单_微信更新,新功能上了热搜

微信在推出新功能方面相当克制,但每一次总能引起全网关注。昨天,微信又因为一个小功能的改进再次上了热搜,在安卓最新的 7.0.17 版本当中,微信取消了两分钟内删除功能。在新版微信中,发出的消息在两分钟内只有撤回功能…

windows下配置java环境jdk

Windows系统下搭建java的开发环境和配置环境变量 具体步骤打开链接地址:https://www.cnblogs.com/lijuntao/p/6694483.html转载于:https://www.cnblogs.com/ccw869476711/p/9401468.html

mysql 分区_搞懂MySQL分区

一.InnoDB逻辑存储结构首先要先介绍一下InnoDB逻辑存储结构和区的概念,它的所有数据都被逻辑地存放在表空间,表空间又由段,区,页组成。段段就是上图的segment区域,常见的段有数据段、索引段、回滚段等,在In…

apt Could not get lock /var/lib/dpkg/lock 解决方案

apt Could not get lock /var/lib/dpkg/lock 解决方案 删除锁定文件 sudo rm /var/lib/dpkg/lock

oracle创建DBLink连接

1.创建dblink的第一种方式,是在本地数据库tnsnames.ora文件中配置了要远程访问的数据库。tnsnames.ora文件在你安装oracle客户端安装文件里 如:(E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN) 创建远程连接: INT (DESCRIPTION (ADDRES…

理解oracle中连接和会话

理解oracle中连接和会话1. 概念不同:概念不同: 连接是指物理的网络连接。 在已建立的连接上,建立客户端与oracle的会话,以后客户端与oracle的交互都在一个会话环境中进行。 2. 关系是多对多: 一个连接上可以建立0个…

ActiveMQ消息存储持久化

转https://www.cnblogs.com/xinhuaxuan/p/6128380.html https://blog.csdn.net/lr131425/article/details/68064914 为了避免意外宕机以后丢失信息,需要做到重启后可以恢复消息队列,消息系统一般都会采用持久化机制。 就是在发送者将消息发送出去后&…

python 非_Python函数的非固定参数

一、概述在原来的文章中我已经写了,位置参数和关键字参数,下面我们来谈谈默认参数和参数组二、默认参数默认参数指的是,我们在传参之前,先给参数制定一个默认的值。当我们调用函数时,默认参数是非必须传递的。默认参数…

C#关于面对象多态例子

//主的喂狗 class Program { static void Main(string[] args) { //我们来模拟一个主人养狗动物的例子 首先创建一个主人对象,同时主人买了条狗 //买来条狗,主人一喂,狗会吃东西 Person person ne…

ubuntu package XXX needs to be reinstalled,but I can't find an archive 问题修复

ubuntu package XXX needs to be reinstalled, but I can’t find an archive 修复 原文连接: https://blog.csdn.net/tbitwqb/article/details/78241101 内容: 不知道什么原因,可能是升级过程过关机或者其他什么情况导致当前问题的发生。 无论是apt…

CentOS6.2解决passwd: Authentication token manipulation error报错

passwd: Authentication token manipulation error这种错误可能有多种原因,就我了解的可能有/etc/passwd等文件i权限 今天在给学员上课的时候发现提示passwd: Authentication token manipulation error错误,我来简单描述今天的问题 [roothost4 Scripts]#…

Java核心技术第五章——2.Object类

Object类:所有类的超类 Object类是Java中所有类的始祖,在Java中每个类都是由它扩展而来的。但是并不需要这样写: public class Emloyee extends Object 如果没有明确的指出超类,Object就被认为是这个类的超类。在Java中&#xff0…

21day学通python_铁乐学python_day21_面向对象编程3

抽象类和接口类以下内容大部分摘自博客http://www.cnblogs.com/Eva-J/继承有两种用途:一:继承基类的方法,并且做出自己的改变或者扩展(代码重用)二:声明某个子类兼容于某基类,定义一个接口类Interface,接口…

系统crash无法启动 tpm error / could not read size 0x8000000e

系统crash无法启动 tpm error / couldn’t read size 0x8000000e 原文连接: https://unix.stackexchange.com/questions/305719/a-tpm-error-7-occurred-attempting-to-read-a-pcr-value-in-centos 内容: 问题: I’m getting this error while booting…

ASP.NET文件的下载

/// <summary>/// 下载文件/// </summary>/// <param name"filePath">文件的路径</param>/// <param name"fileName">文件名(有时候文件名存在数据库中用于替换路径中的文件名)</param>public void FileDownLoad(stri…

TestLink1.9.3测试用例:Excel转换XML工具一

最近在整理测试用例&#xff0c;所以想找一个合适的工具来完成对测试需求、测试用例的管理。对比了一翻&#xff0c;发现开源工具中扩展比较好的还属TestLink&#xff0c;而且还可以与JIRA进行对接&#xff0c;这样就引起了我更大的兴趣。加上之前本来就接触过此工具&#xff0…

MYSQL 使用自定义表变量

mysql 用户自定义表变量&#xff0c;ENGINEMyISAM DEFAULT CHARSETgb2312; 制定编码方式&#xff0c;防止乱码 DROP TABLE IF EXISTS p_temp; create temporary TABLE p_temp ( RowIndex int ,PRIMARY KEY (RowIndex))ENGINEMyISAM DEFAULT CHARSETgb2312; 转载于:https:/…

early EOF fatal: index-pack failed

early EOF fatal: index-pack failed 原文链接: https://stackoverflow.com/questions/21277806/fatal-early-eof-fatal-index-pack-failed 内容: First, turn off compression: git config --global core.compression 0 Next, let’s do a partial clone to truncate the a…

linux下运行python unitest_Python unittest打印日志可以在Linux上运行,但在Windows上不行...

我正在尝试编写一个unittest&#xff0c;它将stdout和stderr重定向到一个写在Windows网络驱动器上的文件。出于某些原因&#xff0c;相同的脚本(只有diff.是目录路径)可以在Linux上工作&#xff0c;但在Windows上不行。在Windows上运行时&#xff0c;不会将任何内容写入日志文件…

emacs 探索之五:latex配置

最近需要使用Latex写论文&#xff0c;之前一直在用emacs&#xff0c;而且渐渐理解emacs的思想之后发现大多数事情都能够在emacs中完成&#xff0c;那么自然会想到emacs是否能够与latex相结合。Google一下发现好多方式&#xff0c;当前前提是需要安装latex软件&#xff0c;然后e…

自动填充脚本使用及注意事项

网站开发需要&#xff0c;找了几个js脚本&#xff0c;最后选择了jQuery Autocomplete Mod&#xff08;http://www.pengoworks.com/workshop/jquery/autocomplete.htm&#xff09; 稍作修改&#xff0c;改动处见中文注释 1 jQuery.autocomplete function(input, options) {2 …

FFmpeg 与媒体文件关系

1. 容器/文件&#xff08;Container/File&#xff09;&#xff1a;即特定格式的多媒体文件&#xff0c;比如MP4&#xff0c;flv&#xff0c;mov等。 2. 媒体流&#xff08;Stream&#xff09;&#xff1a;表示在时间轴上的一段连续的数据&#xff0c;比如一段声音数据、一段视频…