URL的正则表达式(js代码)

news2024/11/21 1:24:41

在WWW上,每一信息资源都有统一的且在网上的地址,该地址就叫URL(Uniform Resource Locator,统一资源定位器),它是WWW的统一资源定位标志,就是指网络地址。

语法

URL由三部分组成:资源类型、存放资源的主机域名、资源文件名。

也可认为由4部分组成:协议、主机、端口、路径

URL的一般语法格式为:protocol:// hostname[:port] / path / [:parameters][?query]#fragment

其中带方括号的为可选项

格式说明

protocol(协议)

指定使用的传输协议,下表列出 protocol属性的有效方案名称。 最常用的是HTTP协议,它也是WWW中应用最广的协议。

file 资源是本地计算机上的文件。格式file:///,注意后边应是三个斜杠。

ftp 通过 FTP访问资源。格式 FTP://

gopher 通过 Gopher 协议访问该资源。

http 通过 HTTP 访问该资源。 格式 HTTP://

https 通过安全的 HTTPS 访问该资源。 格式 HTTPS://

mailto 资源为电子邮件地址,通过 SMTP 访问。 格式 mailto:

MMS 通过 支持MMS(流媒体)协议的播放该资源。(代表软件:Windows Media Player)格式 MMS://

ed2k 通过支持ed2k(专用下载链接)协议的P2P软件访问该资源。(代表软件:电驴) 格式 ed2k://

Flashget 通过支持Flashget:(专用下载链接)协议的P2P软件访问该资源。(代表软件:快车) 格式 Flashget://

thunder 通过支持thunder(专用下载链接)协议的P2P软件访问该资源。(代表软件:迅雷) 格式 thunder://

news 通过 NNTP 访问该资源。

hostname(主机名)

是指存放资源的服务器的域名系统(DNS) 主机名或 IP地址。有时,在主机名前也可以包含连接到服务器所需的用户名和密码(格式:username:password@hostname)。

port(端口号)

整数,可选,省略时使用方案的默认端口,各种传输协议都有默认的端口号,如http的默认端口为80。如果输入时省略,则使用默认端口号。有时候出于安全或其他考虑,可以在服务器上对端口进行重定义,即采用非标准端口号,此时,URL中就不能省略端口号这一项。

path(路径)

由零或多个“/”符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。

parameters(参数)

这是用于指定特殊参数的可选项,有服务器端程序自行解释。

query(查询)

可选,用于给动态网页(如使用CGI、ISAPI、PHP/JSP/ASP/ASP.NET等技术制作的网页)传递参数,可有多个参数,用“&”符号隔开,每个参数的名和值用“=”符号隔开。

fragment(信息片断)

字符串,用于指定网络资源中的片段。例如一个网页中有多个名词解释,可使用fragment直接定位到某一名词解释。

案例说明

协议、主机、端口、路径

https://blog.csdn.net/weixin_53436351?spm=1011.2124.3001.5343

协议(HTTP):规定数据传输的方式

域名(IP):在网络环境中找到主机-------用 :// 与协议分隔开

端口(port):(常省略)在网络主机上,标识一个进程(应用程序)------用 : 与域名分隔开

资源路径:标识网络资源(文件,图片,音视频,变量...)------用 :// 与端口分隔开

查询参数:传递给资源路径对应的数据------用 ? 与资源路径分隔开,查询内部参数用 & 分隔多个键值对

https://www.baidu.com/

协议:https

域名(IP):www.baidu.com

端口(port):443

资源路径:当没有资源路径时,可以默认是 / ,在各个网站通常有默认的路径如index.html

协议,域名,端口,虚拟目录,文件名,锚,参数

protocol:// hostname[:port] / path / [;parameters][?query]#fragment

协议protocol:一般为http或https

域名hostname:一个URL中,也可以使用IP地址作为域名使用

端口port:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。

端口不是一个URL必须的部分,如果省略端口部分,将采用默认端口

虚拟目录path:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分

虚拟目录也不是一个URL必须的部分

文件名;parameters:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。

文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名

锚fragment:从“#”开始到最后,都是锚部分。

锚部分也不是一个URL必须的部分

参数query:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。

注意:URL 只能使用 ASCII 字符集来通过因特网进行发送。也就是说URL只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号 。

匹配URL的正则表达式(js代码)

var match = /^((([Hh][Tt])|(Ff))[Tt][Pp][Ss]?):\/\/[\w\-]+(\.[\w\-]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?$/;

匹配:

(1)、直接匹配域名地址:

1

2

var matchString = 'https://i.cnblogs.com/';

console.log(match.test(matchString)); // ==> true

(2)、匹配链接含(*.htm,*.html,*.php,*.aspx...)后缀的地址:

1

2

var matchString = 'https://i.cnblogs.com/EditPosts.aspx';

console.log(match.test(matchString)); // ==> true

(3)、匹配含参数的地址:

1

2

var matchString = 'https://i.cnblogs.com/EditPosts.aspx?opt=1';

console.log(match.test(matchString)); // ==> true

使用说明:

(1)、地址必须以http/https/ftp/ftps开头(不区分大小写);

(2)、地址不能包含双字节符号或非链接特殊字符。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/194222.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022财年业绩增长乏力渐显,AR电商是Snap下一个突破口吗?

北京时间2月1日,Snap公布了2022财年第四季度和全年财务业绩,财报发布后,Snap盘后股价大幅下跌,最终收跌14.97%。 这并非Snap首次出现公布业绩后股价暴跌的情况,不可否认的是市场的敏锐度十分迅捷。那么,20…

数据结构——栈

一、栈的定义 栈是限定仅在表尾进行插入和删除操作的线性表。 允许插入和删除的一端称为栈顶,另一端称为栈底,不含任何数据元素的栈称为空栈。栈又称为后进先出的线性表,简称LIFO结构。 栈的插入操作,叫作进栈,也称压栈…

不固定版式文档的OCR模型自主开发流程及技术应用实例

随着各行业数字化、智能化建设的脚步加快,OCR得到了普及应用。当前,OCR技术主要应用于标准证件、票据识别,通过自动检测并识别、提取文字,减少人工录入信息的工作量,提升业务效率。目前,企业对OCR的识别精度…

java 分布式缓存 redis持久化 redis主从 Redis哨兵 Redis分片集群

-- 基于Redis集群解决单机Redis存在的问题 单机的Redis存在四大问题: 数据丢失问题 :Redis是内存存储,服务重启可能会丢失数据 并发能力问题 :单节点Redis并发能力虽然不错,但也无法满足如618这样的高并发场景 故障…

flink学习35:flinkSQL查询mysql

总览: import org.apache.flink.streaming.api.scala._ import org.apache.flink.streaming.api.scala.StreamExecutionEnvironment import org.apache.flink.table.api.EnvironmentSettings import org.apache.flink.table.api.bridge.scala.{StreamTableEnvi…

day 23 贪心

P4447 [AHOI2018初中组]分组要求分成的每个小组的队员实力值连续,同时,一个队不需要两个实力相同的选手满足所有人都恰好分到一个小组,使得人数最少的组人数最多,输出人数最少的组人数的最大值。注意:实力值可能是负数…

【软件测试】 MySQL数据库总结,表的一系列操作,你看的都用得到......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 MySQL中的数据类型 …

ROS小车研究笔记2/2/2023 激光雷达建图

1 启动激光雷达建图节点 roslaunch turn_on_wheeltec_robot mapping.launch 2 启动rviz使建图可视化 rviz 在rviz中如果出现小车坐标错误,如小车坐标倾斜,可以按单片机上的RESET键使里程计复位。 我在测试中还出现启动mapping.launch后持续显示无法启动…

2023牛客寒假算法基础集训营5 -- C - 小沙の不懂

题目如下&#xff1a; 题目描述 输入描述: 输入两个整数 a, b, 0≤a,b<101050 \le a, b < 10^{10^5}0≤a,b<10105 输出描述: 如果在每一种情况中 a>ba>ba>b, 则输出">“。 如果在每一种情况中 a<ba<ba<b, 则输出”<“。 如果在每一种…

KT6368A双模蓝牙芯片功能 参数 应用 等等介绍

目录 一、KT6368A蓝牙芯片的基本介绍 二、KT6368A的功能介绍 三、KT6368A应用场景介绍 四、KT6368A的扩展说明 一、KT6368A蓝牙芯片的基本介绍 先看看官网的简单介绍&#xff1a; KT6368A芯片是一款支持蓝牙双模的纯数据芯片&#xff0c;蓝牙5.1版本。芯片的亮点在超小尺…

2022年重回王座,通用汽车电气化前景几何?

北京时间1月31日&#xff0c;美国汽车巨头通用汽车发布2022财年年报&#xff0c;第四度业绩超预期。 据通用汽车财报显示&#xff0c;其2022年Q4实现营收431.08亿美元&#xff0c;市场预期为406.5亿美元&#xff0c;摊薄调整后每股收益为2.12美元&#xff0c;市场预期为1.69美…

开学礼物送什么给孩子有意义?盘点最好的开学礼物之护眼台灯

即将开学啦&#xff0c;很多家长会给孩子准备开学的礼物&#xff0c;鼓励孩子春季新学期好好学习。 那么在开学送哪些礼物能显现出家长的良苦用心呢&#xff1f;也是随着这几年儿童近视率逐渐上升&#xff0c;近视成为许多家长担忧的问题&#xff0c;能更好的预防近视&#xf…

mongodb副本集部署及springboot集成

一、mongodb应用安装1、官网下载mongodb的社区版https://www.mongodb.com/try/download/community2、离线安装将下载好的mongodb安装包上传至服务器指定目录病解压&#xff08;1&#xff09;配置环境变量export MONGO_HOME/home/master/mongodb/mongo export PATH$MONGO_HOME/b…

自定义注解

如何实现自定义注解在我们实际开发过程中如果能合理的运用自定义注解&#xff0c;则会大大减少我们代码的开发量。那怎么才能实现自定义注解呢&#xff1f;废话不多说&#xff0c;直接上干货&#xff01;一、创建注解这一步呢&#xff0c;我们可以理解成对应的实体类&#xff0…

BetaFlight统一硬件资源抽象设计

BetaFlight统一硬件资源抽象设计1. 源由2. 资源配置注意事项3. 资源配置文件修改验证步骤Step 1&#xff1a;确认硬件修改内容Step 2&#xff1a;资源配置文件修改Step 3&#xff1a;验证配置文件Step 4&#xff1a;提交资源配置文件PR4. 参考资料就笔者接触嵌入式设计以来&…

ESP32设备驱动-MAX44009环境光传感器驱动

MAX44009环境光传感器驱动 文章目录 MAX44009环境光传感器驱动1、MAX44009介绍2、硬件准备3、软件准备4、驱动实现1、MAX44009介绍 MAX44009 环境光传感器具有 IC 数字输出,非常适合智能手机、笔记本电脑和工业传感器等多种便携式应用。 它的工作电流小于 1A,是业内功耗最低…

Springboot——Swagger

Swagger2 的 maven 依赖使用 Swagger2 工具&#xff0c;必须要导入 maven 依赖&#xff0c;当前官方最高版本是 2.8.0&#xff0c;我尝试了一下&#xff0c;个人感觉页面展示的效果不太好&#xff0c;而且不够紧凑&#xff0c;不利于操作。另外&#xff0c;最新版本并不一定是最…

Redux toolkit

Redux 是 JavaScript 应用的状态容器&#xff0c;提供可预测的状态管理。 Redux Toolkit 是官方推荐的编写 Redux 逻辑的方法 入门 Redux | Redux 中文官网 本案例是一个加&#xff0c;减的计算器&#xff0c;从零到壹 1、创建一个react的项目 Create-react-app react-too…

MybatisX快速生成增删改查

MybatisX快速生成增删改查 MybatisX 是一款基于 IDEA 的快速开发插件&#xff0c;方便在使用mybatis以及mybatis-plus开始时简化繁琐的重复操作&#xff0c;提高开发速率。 注意&#xff1a;idea得用最新的版本才能生效一些功能&#xff0c;我用的是2021.3版本的 1 安装 file …

【Unity VR开发】结合VRTK4.0:直线

桃花坞里桃花庵&#xff0c;桃花庵里桃花仙。桃花仙人种桃树&#xff0c;又折桃花当酒钱。 酒醒只在花前坐&#xff0c;酒醉还来花下眠。半醉半醒日复日&#xff0c;花落花开年复年。 但愿老死花酒间&#xff0c;不愿鞠躬车马前。车尘马足富者趣&#xff0c;酒盏花枝贫者缘。…