相关文章推荐
自信的拖把  ·  ORA-01779: ...·  11 月前    · 
爱吹牛的海龟  ·  SAP R/3 ABAP ...·  1 年前    · 

解析 URL 参数是一个常用的场景,一般有 2 种处理方式:① 正则获取;② split 自行处理;
本文写了 2 个常用的场景示例:① 获取所有参数;② 获取单个参数;

一. 获取所有参数的 <key, value> 对象

1. 正则方式

* 获取当前 URL 所有 GET 查询参数 * 入参:要解析的 URL,不传则默认为当前 URL * 返回:一个<key, value>参数对象 function getUrlQueryParams ( url = location . search ) { const params = { } ; const keys = url . match ( /([^?&]+)(?==)/g ) ; const values = url . match ( /(?<==)([^&]*)/g ) ; for ( const index in keys ) { params [ keys [ index ] ] = values [ index ] ; return params ;
  • ([^?&]+) 意思是匹配非 ? 及 & 开头的非空字符串
  • (?==) 意思是非获取匹配 = ,正向肯定预查,以便获取不带等号结尾的 key 值
  • ([^&]*) 意思是匹配非 ? 及 & 结尾的字符串(包含空字符串情况,因为有的 value 值会为空)
  • (?<==) 意思是非获取匹配 = ,反向肯定预查,以便获取不带等号开头的 value 值
  • 注意: IOS SyntaxError: Invalid regular expression: invalid group specifier name 在 iOS 上会不支持常用零宽断言 ?<=、?<!、?!、?= 因此上面的函数不适用 iOS,下面的方法可以

2. 正则 + split 方式

* 获取当前 URL 所有 GET 查询参数 * 入参:要解析的 URL,不传则默认为当前 URL * 返回:一个<key, value>参数对象 function getUrlQueryParams ( url = location . search ) { const params = { } ; const reg = /([^&?]*)=([^&]*)/g ; const res = url . match ( reg ) ; for ( const key in res ) { const query = res [ key ] . split ( '=' ) ; params [ query [ 0 ] ] = query [ 1 ] ; return params ;

二. 获取单个 key 的参数

1. 正则方式

* 获取当前 URL 单个 GET 查询参数 * 入参:要解析的 URL,不传则默认为当前 URL * 返回:一个<key, value>参数对象 function getUrlSingleParam ( key , url = location . search ) { const reg = new RegExp ( "(\\?|&)" + key + "=([^&]*)(&|$)" ) ; const r = url . match ( reg ) ; if ( r != null ) { return unescape ( r [ 2 ] ) ; return null ;
  • (\\?|&) 意思是字符串中以 ?或& 开始的地方
  • ([^&]*) 意思是非 & 的字符串
  • (&|$) 意思是以 &或$ 结尾的字符串

2. split 方式

* 获取当前 URL 单个 GET 查询参数 * 入参:要解析的 URL,不传则默认为当前 URL * 返回:一个<key, value>参数对象 function getUrlSingleParam ( key , url = location . search ) { var query = url . substring ( 1 ) ; var vars = query . split ( "&" ) ; for ( var i = 0 ; i < vars . length ; i ++ ) { var pair = vars [ i ] . split ( "=" ) ; if ( pair [ 0 ] == key ) { return pair [ 1 ] ; } return null ; /*通过正则 获取 url 参数 */ function get Url Param(name){ var reg = new RegExp((^|&)+ name +=([^&]*)(&|$)); var r = [removed].search.substr(1).match(reg); if(r!=null)return decodeURI(r[2]); return null; 以上这篇通过正则 package com.Qi.cn;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Test {/*** 现有字符串 String :"a.do?pageIndex=1&ac=6&pageIndex=123&pageIndex1=1&pageindex=123&... 1.代码如下所示: // An highlighted block let url = 'https:www.baidu.com:5500?name=erYa&age=18#index'; function query Url Params(){ let first url =this.split('?')[1]; let two url =first url .split(''); // URL 参数 取得   function get Query String (name) {       var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");       var r function get Url Params(name) { var reg = new RegExp("(^|&)" + name + “=([^&]*)(&|$)”, “i”); //定义 正则表达式 var r = window.location.search.substr(1).match(reg); if (r != null) re... export default{ get Url Key:function(name){ return decodeURIComponent((new RegExp('[?|&]'+name+'='+'([^&;]+?)(&|#|;|$)').exec(location.href)||[,""])[1].replace(/\+/g,'%20'))||null; 2、在main.js里引入js文件 3、在需. 最前面是?或&,紧跟着除 ?&#以外的字符若干,然后是等号,最后再跟着除 ?&#以外的字符,并且要分组捕获到【除?&#以外的字符】 写出来的正则就是这样: var reg=/[?&]([^?&#]+)=([^?&#]+)/g; 用正则的exec来处理,同时用到while循环,因为我们不确定 参数 到底有多少对 可以看到在. 前言:相信大家对 获取 浏览器 参数 都很熟悉,第一反应是使用 正则表达式 去对浏览器的 参数 进行切割 获取 ,然而浏览器已经提供了一个 URL SearchParams这个接口给我们去操作 URL 的查询字符串 使用 正则表达式 获取 url 温故而知新,先上一下我们常规使用 正则表达式 获取 url 参数 的代码 function getParams( url , params){ var res = new RegExp("(?:&|/?)" + params + "=([^&$]+)").exec( url ); 正则表达式 获取 url 传参讲解 示例 url : http://localhost:8080/devicebd.html?location=30220000092&theId=2710-20200700055 function get Query String (name) {//查找 url 传递的 参数 信息 var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = wind