正则表达式拆分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新手教程之ArrayList的基本使用
Jun 20 Java/Android
java中重写父类方法加不加@Override详解
Jun 21 Java/Android
Java基于字符界面的简易收银台
Jun 26 Java/Android
Spring中bean的生命周期之getSingleton方法
Jun 30 Java/Android
Spring Boot 整合 Apache Dubbo的示例代码
Jul 04 Java/Android
Java生成读取条形码和二维码的简单示例
Jul 09 Java/Android
SpringBoot SpringEL表达式的使用
Jul 25 Java/Android
SpringBoot+Vue+JWT的前后端分离登录认证详细步骤
Sep 25 Java/Android
java如何实现获取客户端ip地址的示例代码
Apr 07 Java/Android
Java数组详细介绍及相关工具类
Apr 14 Java/Android
Java实现扫雷游戏详细代码讲解
May 25 Java/Android
Android Canvas绘制文字横纵向对齐
Jun 05 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
资料注册后发信小技巧
2006/10/09 PHP
php中文乱码怎么办如何让浏览器自动识别utf-8
2014/01/15 PHP
PHP数字前补0的自带函数sprintf 和number_format的用法(详解)
2017/02/06 PHP
thinkPHP通用控制器实现方法示例
2017/11/23 PHP
PHP实现的超长文本分页显示功能示例
2018/06/04 PHP
javascript 客户端验证上传图片的大小(兼容IE和火狐)
2009/08/15 Javascript
用javascript获取当页面上鼠标光标位置和触发事件的对象的代码
2009/12/09 Javascript
Javascript学习笔记9 prototype封装继承
2010/01/11 Javascript
含有CKEditor的表单如何提交
2014/01/09 Javascript
控制input输入框中提示信息的显示和隐藏的方法
2014/02/12 Javascript
在Node.js中实现文件复制的方法和实例
2014/06/05 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
2017/02/15 Javascript
Mac系统下Webstorm快捷键整理大全
2017/05/28 Javascript
vue+vux实现移动端文件上传样式
2017/07/28 Javascript
基于node下的http小爬虫的示例代码
2018/01/11 Javascript
vue 根据数组中某一项的值进行排序的方法
2018/08/30 Javascript
详解vue 自定义marquee无缝滚动组件
2019/04/09 Javascript
详解微信小程序开发之formId使用(模板消息)
2019/08/27 Javascript
Javascript原型链及instanceof原理详解
2020/05/25 Javascript
python从入门到精通(DAY 2)
2015/12/20 Python
为Python的Tornado框架配置使用Jinja2模板引擎的方法
2016/06/30 Python
Python单例模式实例详解
2017/03/01 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
2017/11/22 Python
Python 实现微信防撤回功能
2019/04/29 Python
Python列表与元组的异同详解
2019/07/02 Python
Python Django框架防御CSRF攻击的方法分析
2019/10/18 Python
详解Python 中的容器 collections
2020/08/17 Python
canvas如何实现多张图片编辑的图片编辑器
2020/03/10 HTML / CSS
美国真皮手袋品牌:GiGi New York
2017/03/10 全球购物
计算机网络毕业生自荐信
2013/10/01 职场文书
投资协议书范本
2014/04/21 职场文书
2016年百日安全生产活动总结
2016/04/06 职场文书
世界上超棒的8种逻辑思维
2019/08/06 职场文书
WordPress多语言翻译插件 - WPML使用教程
2021/04/01 PHP
电脑只能进入安全模式无法正常启动的解决办法
2022/04/08 数码科技
图神经网络GNN算法
2022/05/11 Python