一道关于js正则表达式的面试题

本文介绍了一种使用正则表达式解析URL的方法,通过一个JavaScript函数实现了对URL中协议、主机名、路径、查询参数和hash的提取。示例代码详细展示了如何定义正则表达式并解析传入的URL字符串。

 

 

这道面试题明显是要用到正则表达式来解决的,由于太久没有写正则表达式了,一时之间竟然写不出来,所以记录一下笔记,下面直接上代码:

 1 function parseUrl(str) {
 2     // 判断是否传入参数
 3     if (str) {
 4         var obj = {};
 5         var queryArr = [];
 6         // 正则表达式规则
 7         var re = /^(http\w?):\/\/([0-9a-zA-Z\.]+)([a-zA-Z0-9\/]+)\?([a-zA-Z0-9\=\&]+)#([0-9a-zA-Z\.]+)/;
 8         // 利用正则表达式将字符串分组
 9         var reArr = re.exec(str);
10         if (reArr) {
11             obj.peotocol = reArr[1];
12             obj.host = reArr[2];
13             obj.path = reArr[3];
14             queryArr = reArr[4].split(/[\&\=]+/);
15             obj.query = {};
16             for (var i = 0; i < queryArr.length; i += 2) {
17                 obj.query[queryArr[i]] = queryArr[i + 1];
18             }
19             obj.hash = reArr[5]
20             return obj;
21         } else {
22             return null;
23         }
24     } else {
25         return null;
26     }
27 }

 

完。

 

转载于:https://www.cnblogs.com/yuanyiming/p/10751544.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值