正则表达式拆分url实例代码


Posted in Java/Android onFebruary 24, 2022

背景

做web开发的同学,经常会有从url中获取二级域名或者主域名或者参数等等需求,需要扎实的正则功底。本文提供一个全面的url拆分案例,需要哪个部分用哪个部分。

案例

将url的各个部分拆开,让我想取哪部分就取哪部分?

url: http://www.baidu.com/love/java?lang=java
regex: (\w+):\/\/([^/:]+)(:\d*)?([^# ]*)

使用js举例

var url = "http://www.baidu.com:80/love/java?lang=java";
var patt1 = /(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/;
arr = url.match(patt1);
for (var i = 0; i < arr.length ; i++) {
    document.write(arr[i]);
    document.write("<br>");
}

输出结果如下:

http://www.baidu.com:80/love/java?lang=java
http
www.baidu.com
:80
/love/java?lang=java

使用java举例

String url = "http://www.baidu.com:80/love/java?lang=java";
        Pattern pattern = Pattern.compile("(\\w+):\\/\\/([^/:]+)(:\\d*)?([^# ]*)");
        Matcher matcher = pattern.matcher(url);
        matcher.find();
        for (int i = 1; i <= matcher.groupCount(); i++){
            System.out.println(matcher.group(i));
        }

输出结果:

http
www.baidu.com
:80
/love/java?lang=java

正则说明

实例中的数组包含 5 个元素,索引 0 对应的是整个字符串,索引 1 对应第一个匹配符(括号内),以此类推。

第一个括号子表达式捕获 Web 地址的协议部分。该子表达式匹配在冒号和两个正斜杠前面的任何单词。

第二个括号子表达式捕获地址的域地址部分。子表达式匹配非 : 和 / 之后的一个或多个字符。

第三个括号子表达式捕获端口号(如果指定了的话)。该子表达式匹配冒号后面的零个或多个数字。只能重复一次该子表达式。

第四个括号子表达式捕获 Web 地址指定的路径和 / 或页信息。该子表达式能匹配不包括 # 或空格字符的任何字符序列。

总结

到此这篇关于正则表达式拆分url的文章就介绍到这了,更多相关正则表达式拆分url内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Java/Android 相关文章推荐
SpringBoot生成License的实现示例
Jun 16 Java/Android
Java并发编程之Executor接口的使用
Jun 21 Java/Android
解决SpringBoot文件上传临时目录找不到的问题
Jul 01 Java/Android
解决Swagger2返回map复杂结构不能解析的问题
Jul 02 Java/Android
gateway网关接口请求的校验方式
Jul 15 Java/Android
Java反应式框架Reactor中的Mono和Flux
Jul 25 Java/Android
SpringCloud项目如何解决log4j2漏洞
Apr 10 Java/Android
Android开发之WECHAT微信小程序路由跳转的两种形式
Apr 12 Java/Android
Android中的Launch Mode详情
Jun 05 Java/Android
springboot读取resources下文件的方式详解
Jun 21 Java/Android
SpringBoot深入分析讲解监听器模式下
Jul 15 Java/Android
app场景下uniapp的扫码记录
Jul 23 Java/Android
mybatis源码解读之executor包语句处理功能
Feb 15 #Java/Android
java executor包参数处理功能 
Feb 15 #Java/Android
Java如何实现通过键盘输入一个数组
Feb 15 #Java/Android
Java实现给Word文件添加文字水印
Feb 15 #Java/Android
SSM项目使用拦截器实现登录验证功能
Jan 22 #Java/Android
利用Sharding-Jdbc进行分库分表的操作代码
关于MybatisPlus配置双数据库驱动连接数据库问题
Jan 22 #Java/Android
You might like
PHP 基于文件头的文件类型验证类函数
2012/05/01 PHP
PHP面向对象自动加载机制原理与用法分析
2016/10/14 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
2018/03/12 PHP
yii2 在控制器中验证请求参数的使用方法
2019/06/19 PHP
javascript 多级checkbox选择效果
2009/08/20 Javascript
ASP.NET MVC中EasyUI的datagrid跨域调用实现代码
2012/03/14 Javascript
判断ie的两种简单方法
2013/08/12 Javascript
JavaScript instanceof 的使用方法示例介绍
2013/10/23 Javascript
js实现倒计时时钟的示例代码
2013/12/17 Javascript
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
JavaScript中的函数模式详解
2015/02/11 Javascript
JavaScript时间转换处理函数
2015/04/14 Javascript
基于Vuejs实现购物车功能
2016/08/02 Javascript
javascript添加前置0(补零)的几种方法
2017/01/05 Javascript
详解angular2采用自定义指令(Directive)方式加载jquery插件
2017/02/09 Javascript
Bootstrap布局之栅格系统学习笔记
2017/05/04 Javascript
微信小程序实现自定义modal弹窗封装的方法
2018/06/15 Javascript
跨域解决之JSONP和CORS的详细介绍
2018/11/21 Javascript
Vue实现附件上传功能
2020/05/28 Javascript
[02:15]2014DOTA2国际邀请赛 专访LGD.lin小兔子是大腿
2014/07/14 DOTA
Python利用Beautiful Soup模块修改内容方法示例
2017/03/27 Python
Python 多核并行计算的示例代码
2017/11/07 Python
Python3读取Excel数据存入MySQL的方法
2018/05/04 Python
python脚本开机自启的实现方法
2019/06/28 Python
详解Pycharm安装及Django安装配置指南
2020/09/15 Python
Python中生成ndarray实例讲解
2021/02/22 Python
临床医学专业毕业生的自我评价
2013/10/17 职场文书
八年级英语教学反思
2014/01/09 职场文书
期末自我鉴定
2014/02/02 职场文书
公司新年寄语
2014/04/04 职场文书
社区春季防火方案
2014/06/02 职场文书
民族精神月活动总结
2014/08/28 职场文书
难以忽视的真相观后感
2015/06/05 职场文书
《当代神农氏》教学反思
2016/02/23 职场文书
2016年学校“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
python b站视频下载的五种版本
2021/05/27 Python