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

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

通常,您需要访问URL的特定组件。这些可能是主机名(例如dmitripavlutin.com
)或路径名(例如/parse-url-javascript
)。
URL()
构造器是访问URL组件的便捷解析器。
在本文中,我将向您展示URL的结构及其主要组成部分。
然后,我将描述如何使用URL()
构造函数轻松选择URL的组件,例如主机名,路径名,查询或哈希。
1. URL结构
一幅价值一千个字的图片。在没有太多文字描述的情况下,您可以在下图中找到URL的主要组成部分:

2. URL()构造函数
该URL()
是constuctor功能,可以让一个URL的组成部分的解析:

relativeOrAbsolute
参数可以是绝对URL或相对URL。如果第一个参数是相对的,则第二个参数absoluteBase
是强制性的,并且必须是一个绝对URL,它是第一个参数的基础。
例如,让我们URL()
使用绝对URL进行初始化:

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

实例的href
属性URL()
返回整个URL字符串。
创建后URL()
的实例,您可以访问提出的任何URL组件上一张图片。供参考,这是URL()
实例接口:

USVString
当在JavaScript中返回时,其中type映射为字符串。
3.查询字符串
url.search
属性访问前缀为的URL的查询字符串?
:

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

3.1解析查询字符串
与访问原始查询字符串相比,访问查询参数更方便。
选择查询参数的一种简单方法是赋予url.searchParams
属性。此属性保存URLSearchParams的实例。
URLSearchParams
对象提供了大量的方法(如get(param)
,has(param)
)来访问查询字符串参数。
让我们看一个例子:

url.searchParams.get('message')
返回message
查询参数— 的值'hello'
。
但是,访问不存在的参数的结果url.searchParams.get('missing')
为null
。
4. 主机名
url.hostname
属性包含URL的主机名:

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

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

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

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

7. URL验证
当new URL()
构造函数创建一个实例,它的副作用,这也验证了正确的URL。如果URL值无效,TypeError
则引发a。
例如,http ://example.com
由于URL后面有空格,所以是无效的URL http
。
让我们使用这个无效的URL来初始化解析器:

'http ://example.com'
如预期的那样,因为是无效的URL new URL('http ://example.com')
引发TypeError
。
8. URL操作
除了访问URL成分,性质一样search
,hostname
,pathname
,hash
是可写的-因此你可以操纵的URL。
例如,让我们将现有URL的主机名从修改red.com
为blue.io
:

请注意,实例的only origin
和searchParams
属性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 Blogdmitripavlutin.com
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中࿰…

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

MYSQL 使用自定义表变量
mysql 用户自定义表变量,ENGINEMyISAM DEFAULT CHARSETgb2312; 制定编码方式,防止乱码 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,它将stdout和stderr重定向到一个写在Windows网络驱动器上的文件。出于某些原因,相同的脚本(只有diff.是目录路径)可以在Linux上工作,但在Windows上不行。在Windows上运行时,不会将任何内容写入日志文件…

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

自动填充脚本使用及注意事项
网站开发需要,找了几个js脚本,最后选择了jQuery Autocomplete Mod(http://www.pengoworks.com/workshop/jquery/autocomplete.htm) 稍作修改,改动处见中文注释 1 jQuery.autocomplete function(input, options) {2 …

FFmpeg 与媒体文件关系
1. 容器/文件(Container/File):即特定格式的多媒体文件,比如MP4,flv,mov等。 2. 媒体流(Stream):表示在时间轴上的一段连续的数据,比如一段声音数据、一段视频…