过Javascript得到URL中的参数(query string)
那么,如何通过Javascript得到它呢?而且怎么从这么一堆字符串中找到我所需要的参数所对应的值呢?
方法一:
function getParameterByName(name) { name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), results = regex.exec(location.search); return results == null ? "": decodeURIComponent(results[1]); } console.log(getParameterByName("param")) //yes
先来解释下这段代码吧:
1:定义一个 getParameterByName 函数,接收需要查询的参数的key,然后返回这个参数的value
2:name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
这句代码的作用是把 "[" 换成 "\[" , 把 "]" 换成 "\]" ,之所以做这么一个转换,是因为下面需要使用name这个变量去构造一个正则表达式,而 [ 和 ] 在正则中是关键字,所以需要转义。
3 var regex = new RegExp("[\\?&]" + name + "=([^&#]*)")
这句代码比较简单,匹配 ? 或者 & 然后是 name 然后是 = 和 非(&或者#)。
4 results = regex.exec(location.search); return results == null ? "" : decodeURIComponent(results[1]);
这两句放一起看把,首先 location.search 拿到全部的查询字符串(即文章最开头给的范例URL中红色部分),然后使用正则的exec方法去匹配出结果,这个方法会返回一个数组,在这个例子里面,results这个数组为["?params=yes","yes"]。这里要说明下,因为在正则中,给匹配出yes的部分加了个括号分组,所以结果中数组的第二项(results[1])为yes。
服务范围:定制各类计算机程序设计,vue、jsp、java 各类框架;开发工具 eclipse / myeclipse / idea / vs 等;wap、android、ssm、springboot、asp.net、php、python(爬虫、django、flask)、node.js、react、winform、uniapp 小程序等。

