博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript从URL里面获取参数
阅读量:5087 次
发布时间:2019-06-13

本文共 1705 字,大约阅读时间需要 5 分钟。

如何从URL中获取参数是一个很基本的问题。首先假定URL是合法的,code 如下,欢迎各位大大code review.

 1. 可以使用一个match和循环split

function findQueriesFromUrl(url){    var regex, matches, i, length, pair, result = {}, query;    if(!url) return;    regex = /\w+\=\w*/g;    matches = url.match(regex);    for(i = 0, length = matches.length;i

2. 可以使用exec获得所有的分组, 

function findQueriesFromUrl(url){    var regex, result = {}, match;    if(!url) return;    regex = /(\w+)\=(\w*)/g; //没有/g会死循环。    while(match = regex.exec(url)){
result[decodeURIComponent(match[1])] = decodeURIComponent(match[2]); } return result;}

 

需要注意的是,exec只有针对同样的调用对象同一个字符串的引用作为参数的时候才能迭代返回所有的分组,否则可能会死循环, 例如如下的代码就会死循环:

while(match = (/(\w+)\=(\w*)/g).exec(url)){ result[match[1]] = match[2]; }

 题外话,exec函数会循环返回所有match的对象,例如调用

(function excute(url){    var regex, result = {}, match, i = 0;    regex = /(\w+)\=(\w*)/g;    while(i < 10){        i++;        console.log(regex.exec(url));    }        return result;})('a=b');

会循环输出一个match的对象和null, 如下:

["a=b", "a", "b", index: 0, input: "a=b"]null["a=b", "a", "b", index: 0, input: "a=b"]null["a=b", "a", "b", index: 0, input: "a=b"]null ["a=b", "a", "b", index: 0, input: "a=b"]null["a=b", "a", "b", index: 0, input: "a=b"]null

如果去掉正则表达式里面的g,输出会变成:

 

["a=b", "a", "b", index: 0, input: "a=b"]["a=b", "a", "b", index: 0, input: "a=b"]["a=b", "a", "b", index: 0, input: "a=b"]["a=b", "a", "b", index: 0, input: "a=b"]["a=b", "a", "b", index: 0, input: "a=b"]["a=b", "a", "b", index: 0, input: "a=b"]["a=b", "a", "b", index: 0, input: "a=b"]["a=b", "a", "b", index: 0, input: "a=b"]["a=b", "a", "b", index: 0, input: "a=b"]["a=b", "a", "b", index: 0, input: "a=b"]

这样就不能取到所有的匹配了。

转载于:https://www.cnblogs.com/rixin/p/4049216.html

你可能感兴趣的文章
bzoj4390: [Usaco2015 dec]Max Flow
查看>>
安装前端脚手架
查看>>
在Oracle 里创建带参数的视图
查看>>
Resharp常用设置收集整理
查看>>
NDK以及C语言基础语法(二)
查看>>
android中与Adapter相关的控件----Spinner&AutoCompleteTextView
查看>>
c实验4
查看>>
HDU 5988 Coding Contest 最小费用流 cost->double
查看>>
android 性能优化 -- 启动过程 冷启动 热启动
查看>>
.NET压缩图片保存
查看>>
解决Struts2.2.20版本的标签不支持style属性的问题
查看>>
风螺旋线的切线(二)
查看>>
阿基米德螺旋限制了我们对螺旋的想像
查看>>
【转】图数据计算等各种算法开源库
查看>>
thinkphp中的查询语句
查看>>
git commit:no changes detected
查看>>
基于POI的读写Excel文件的工具类
查看>>
高级文件系统管理--系统配额
查看>>
Objective-C字面量语法总结
查看>>
说说C#委托
查看>>