正则表达式拆分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 相关文章推荐
详解java如何集成swagger组件
Jun 21 Java/Android
死磕 java同步系列之synchronized解析
Jun 28 Java/Android
dubbo集成zipkin获取Traceid的实现
Jul 26 Java/Android
java executor包参数处理功能 
Feb 15 Java/Android
Java 超详细讲解ThreadLocal类的使用
Apr 07 Java/Android
Java Spring Boot 正确读取配置文件中的属性的值
Apr 20 Java/Android
Spring Boot 实现 WebSocket
Apr 30 Java/Android
Android开发手册Chip监听及ChipGroup监听
Jun 10 Java/Android
Android开发EditText禁止输入监听及InputFilter字符过滤
Jun 10 Java/Android
Spring Security动态权限的实现方法详解
Jun 16 Java/Android
springboot集成redis存对象乱码的问题及解决
Jun 16 Java/Android
IDEA中sout快捷键无效问题的解决方法
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制作静态网站的模板框架(三)
2006/10/09 PHP
PHP curl模拟登录带验证码的网站
2015/11/30 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
Laravel学习教程之IOC容器的介绍与用例
2017/08/15 PHP
php 读写json文件及修改json的方法
2018/03/07 PHP
基于jquery实现拆分姓名的方法(纯JS版)
2013/05/08 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
2014/09/03 Javascript
JS实现页面超时后自动跳转到登陆页面
2015/01/19 Javascript
浅谈被jQuery抛弃的函数及替代函数
2015/05/03 Javascript
jQuery使用drag效果实现自由拖拽div
2015/06/11 Javascript
Node.js下自定义错误类型详解
2016/10/17 Javascript
JS如何生成一个不重复的ID的函数
2016/12/25 Javascript
JavaScript对象封装的简单实现方法(3种方法)
2017/01/03 Javascript
JS实现的文字间歇循环滚动效果完整示例
2018/02/13 Javascript
详解vue axios二次封装
2018/07/22 Javascript
解决Vue-cli npm run build生产环境打包,本地不能打开的问题
2018/09/20 Javascript
解决百度Echarts图表坐标轴越界的方法
2018/10/17 Javascript
基于vue的验证码组件的示例代码
2019/01/22 Javascript
js+canvas实现两张图片合并成一张图片的方法
2019/11/01 Javascript
在Docker上部署Python的Flask框架的教程
2015/04/08 Python
python中logging库的使用总结
2017/10/18 Python
深入理解Python单元测试unittest的使用示例
2017/11/18 Python
python3+PyQt5使用数据库窗口视图
2018/04/24 Python
Python unittest单元测试框架总结
2018/09/08 Python
python 顺时针打印矩阵的超简洁代码
2018/11/14 Python
Python脚本修改阿里云的访问控制列表的方法
2019/03/08 Python
利用HTML5 Canvas API绘制矩形的超级攻略
2016/03/21 HTML / CSS
html5实现滑块功能之type=&quot;range&quot;属性
2020/02/18 HTML / CSS
“型”走纽约上东区:Sam Edelman
2017/04/02 全球购物
简单而又朴实的个人求职信分享
2013/12/12 职场文书
两年的个人工作自我评价
2014/01/10 职场文书
低碳生活的宣传标语
2014/06/23 职场文书
人事专员岗位职责说明书
2014/07/30 职场文书
礼貌问候语大全
2015/11/10 职场文书
python中出现invalid syntax报错的几种原因分析
2022/02/12 Python
解决ubuntu安装软件时,status-code=409报错的问题
2022/12/24 Servers