js正则表达式 URL格式匹配详解
0、URL格式
protocol :// hostname[:port] / path / [;parameters][?query]#fragment
[;parameters]没见过 这里就不做相关匹配了
1、代码及运行结果
'use strict'; {// URL地址匹配格式: protocol :// hostname[:port] / path / [;parameters][?query]#fragment// [;parameters]:这都没见过这东西,就不匹配了。let url = ['https://www.baidu.com/','http://192.168.1.1','http://192.168.1.1:8080','https://news.163.com/18/1224/15/E3Q6EJDA0001875N.html#top','https://baidu.com:80/?wd=wq&url=ksks#ddsx2','http://192.168.1.1/p/#name','https://neets.cc/subcriberlist?recommendInventoryId=QNZfMjCRQtS4z8MQrFa7qo'], result = null, matcht = /^(https?:\/\/)([0-9a-z.]+)(:[0-9]+)?([/0-9a-z.]+)?(\?[0-9a-z&=]+)?(#[0-9-a-z]+)?/i, info = ['完整URL', '协议', '地址', '端口', '路径', '查询', '锚点']url.forEach((value) => {result = matcht.exec(value);console.log('---------------------------------------------------------------------------------');for (let i = 0; i < result.length; i++) {console.log(`${info[i]} = ${result[i]}`);}}) }
2、元字符解释
元字符 | 匹配对象 | |
. | 点 | 任意一个字符 |
[...] | 字符组 | 字符组内的任意一个字符 |
[^...] | 排除字符组 | 排除字符组内的所有字符 |
\char | 转义符 | 转义元字符 或 反引用 |
提供计数功能的元字符 | ||
+ | 加号 | 至少一次 |
? | 问号 | 匹配一次,但非必须的 |
* | 星号 | 0次或多次,但非必须的 |
其它元字符 | ||
(...) | 括号 | 限定或界定符,也用于反引用 |
3、协议匹配规则
常见URL协议有http、https等等,所以这里就做针对http和https的匹配。
匹配规则 :^(https?:\/\/)
4、主机名匹配规则
主机名格式为:xxx.xxx.xxx 或 xxx.xxx 2种形式 由字母或数字组成。
如:www.baidu.com baidu.com 127.0.0.1
匹配规则为:([0-9a-zA-z.]+)
5、端口匹配
端口部分是由冒号开头后接数值两部分组成而且web默认端口80是不显示在后面的,所以就有2种情况存在或不存在。
如:127.0.0.1:8080 127.0.0.0
匹配规则为:(:[0-9]+)?
6、路径匹配
路径是由字母、数字、斜杠、点组成。在访问网站首页时后面没有路径地址,所以这块如果存在就匹配。
如:/xxx/xxxx/xxx.html 、 /xxx/xxx
匹配规则为:([/0-9a-zA-Z.]+)?
7、查询字符串匹配
查询字符串的格式为:?xxx=1&ddd=2 或 ?xx=2。由于这块不是必须项所以在匹配时,如果存在就匹配,不存在就算了。
匹配规则为:(\?[0-9a-zA-Z&=]+)?
8、信息片断匹配
信息片断是由#、字母、数值组成。由于这块不是必须项所以在匹配时,如果存在就匹配,不存在就算了。
匹配规则为:(#[0-9-a-zA-Z]+)?
9:其它
我的百度经验地址:https://jingyan.baidu.com/article/a24b33cdce7a0519fe002bf9.html
代码分享地址:https://pan.baidu.com/s/1bE5DUP4knVa0ifDs0kNILQ
转载于:https://www.cnblogs.com/whnba/p/10178541.html
js正则表达式 URL格式匹配详解相关推荐
- js正则表达式 URL格式匹配 http替换成https
匹配替换http为https: function urlConversion(path) {let reg = /^(https?:\/\/)([0-9a-z.]+)(:[0-9]+)?([/0-9a ...
- JS正则表达式常见用法实例详解
这篇文章主要介绍了JS正则表达式常见用法,结合实例形式分析了javascript元字符.分组符.修饰符.量词基本含义,并结合具体案例形式分析了javascript正则基本使用技巧,需要的朋友可以参考下 ...
- url格式组成部分详解
URL格式 在WWW上,每一信息资源都有统一的且在网上唯一的地址,该地址就叫URL(Uniform Resource Locator,统一资源定位器),它是WWW的统一资源定位标志,就是指网络地址. ...
- JavaScript正则表达式的分组匹配详解
1,分组 下面的正则表达式可以匹配kidkidkid: const reg = /kidkidkid/ 而另一种更优雅的写法是: const reg = /(kid){3}/ 这里由圆括号包裹的一个小 ...
- java正则表达式 匹配次数_正则表达式教程之重复匹配详解
本文实例讲述了正则表达式教程之重复匹配.分享给大家供大家参考,具体如下: 注:在所有例子中正则表达式匹配结果包含在源文本中的[和]之间,有的例子会使用Java来实现,如果是java本身正则表达式的用法 ...
- oracle中取反_oracle正则表达式regexp_like的用法详解
oracle正则表达式regexp_like的用法详解 更新时间:2013年06月13日 17:42:05 作者: 本篇文章是对oracle正则表达式regexp_like的用法进行了详细的分析介 ...
- iOS URL Schemes 使用详解 什么是 URL Schemes
URL Schemes 使用详解 用原生 iOS 的人分两种,懂 URL Schemes 的和不懂的. 前者是「魔法师」,后者是「麻瓜」. URL Schemes 应用在 iOS 上已经很久了.对于使 ...
- js中indexOf的用法详解
js中indexOf的用法详解 String.IndexOf 方法 (Char, [startIndex], [count]) 报告指定字符在此实例中的第一个匹配项的索引.搜索从指定字符位置开始,并检 ...
- 正则表达式零宽断言详解
在使用正则表达式时,有时我们需要捕获的内容前后必须是特定内容,但又不捕获这些特定内容的时候,零宽断言就起到作用了. 一.基本概念: 零宽断言正如它的名字一样,是一种零宽度的匹配,它匹配到的内容不会保存 ...
最新文章
- CSS transition delay简介与进阶应用
- 04.设计模式-原型模式
- jQuery 遍历 - closest() 方法
- 《Java 核心技术卷1 第10版》学习笔记------对象克隆【对象拷贝】
- String.prototype.substr()
- 矩阵键盘程序_独立按键与矩阵按键
- 在Raspberry Pi上设置Docker的简单方法
- js设置时间在ie中部兼容总是NAN的问题
- 支付宝新漏洞引发恐慌,那如何关闭小额免密支付呢
- 汇编语言中 编译 连接 构建时的一些错误以及错误的修正方法(不断积累中...)
- FastDFS原理系列文章
- 第21集丨问君何能尔?心远地自偏
- unity3d 不规则外发光描边_PS发光字体教程
- 《认知与设计——理解UI设计准则》笔记(1) 我们感知自己的期望
- ubuntu中smbd服务搭建,ifcongfig命令没有IP地址
- 电脑一些很经典的技巧
- CodeForces - 1413C Perform Easily(双指针)
- nor flash原理详细讲解
- 2023年武汉大学艺术专硕考研上岸前辈初复试备考经验指导
- 第一篇:如何在Win10安装iis
热门文章
- jenkins下载插件失败
- 【视频】主成分分析PCA降维方法和R语言分析葡萄酒可视化实例|数据分享
- 网络安全工程师的学习路线,超级简单,收藏这一篇就够了
- ae计算机没有该字体,【干货】自己动手,完美解决AE CC 2017/CC 2018/CC 2019字体问题CT generic: not ascii...
- 软链接解决存储空间不足
- 使用华为手机怎么从网上打印资料?
- 【21世纪电脑入门】总目录——系统配置、包/库安装、问题修复
- E. 新旧身份证(继承)
- 黑吃黑第一季/全集Banshee迅雷下载
- 户外佩戴哪款耳机好、户外运动耳机推荐