js分解url参数(正则表达式,split比较)(面向对象-极简主义法应用)

一:正则表达式法

<script type="text/javascript">
function getQueryString(url) {
    if(url) {
        url=url.substr(url.indexOf("?")+1); //字符串截取,比我之前的split()方法效率高
    }
    var result = {}, //创建一个对象,用于存name,和value
    queryString =url || location.search.substring(1), //location.search设置或返回从问号 (?) 开始的 URL(查询部分)。
    re = /([^&=]+)=([^&]*)/g, //正则,具体不会用
    m;
    while (m = re.exec(queryString)) { //exec()正则表达式的匹配,具体不会用
        result[decodeURIComponent(m[1])] = decodeURIComponent(m[2]); //使用 decodeURIComponent() 对编码后的 URI 进行解码
    }
    return result;
}
// demo
    var myParam = getQueryString("www.taobao.com?key0=a&key1=b&key2=c");
    alert(myParam.key1);
</script> 

注:

1、substr()与substring(start,stop) ,提取字符串中介于两个指定下标之间的字符。

重要事项:与 slice() 和 substr() 方法不同的是,substring() 不接受负的参数。

参见http://www.jb51.net/w3school/js/jsref_substring.htm

2、location.search.substring(1) ,location.search设置或返回从问号 (?) 开始的 URL(查询部分)。

参见http://www.jb51.net/w3school/htmldom/prop_loc_search.htm

3、exec() 方法用于检索字符串中的正则表达式的匹配。太强大了,还不会用

参考http://www.jb51.net/w3school/js/jsref_exec_regexp.htm

4、使用 decodeURIComponent() 对编码后的 URI 进行解码。

参见http://www.jb51.net/w3school/js/jsref_exec_regexp.htm

二:split法(JAVASCRIPT GUIDE 上COPY的.)

/*
 * This function parses ampersand-separated name=value argument pairs from
 * the query string of the URL. It stores the name=value pairs in
 * properties of an object and returns that object. Use it like this:
 *
 * var args = getArgs( );  // Parse args from URL
 * var q = args.q || "";  // Use argument, if defined, or a default value
 * var n = args.n ? parseInt(args.n) : 10;
 */
function getArgs( ) {
    var args = new Object( );
    var query = location.search.substring(1);     // Get query string
    var pairs = query.split("&");                 // Break at ampersand
    for(var i = 0; i < pairs.length; i++) {
        var pos = pairs[i].indexOf('=');          // Look for "name=value"
        if (pos == -1) continue;                  // If not found, skip
        var argname = pairs[i].substring(0,pos);  // Extract the name
        var value = pairs[i].substring(pos+1);    // Extract the value
        value = decodeURIComponent(value);        // Decode it, if needed
        args[argname] = value;                    // Store as a property
    }
    return args;                                  // Return the object
}  
时间: 2024-10-17 10:45:30

js分解url参数(正则表达式,split比较)(面向对象-极简主义法应用)的相关文章

JS 操作Url参数

项目中需要JS操作路径参数,小弟不才,不跳会,因此查了一下,总结一下使用方法 <script type="text/javascript"> //运用 window.onload = function () { var Request = new Object(); Request = GetRequest(); var urlPara = Request['isChecked']; if (urlPara != null && urlPara != &qu

JS获取url参数及url编码、解码

完整的URL由这几个部分构成:scheme://host:port/path?query#fragment ,各部分的取法如下: window.location.href:获取完整url的方法:,即scheme://host:port/path?query#fragment window.location.protocol:获取rul协议scheme window.location.host:获取host window.location.port:获取端口号 window.location.pa

js获取url参数

   //获取url参数    function getRequest() {         var url = location.search; //获取url中"?"符后的字串 var theRequest = new Object();         if (url.indexOf("?") != -1) { var str = url.substr(1); strs = str.split("&"); for(var i = 

jquery或js 获取url参数

<script type="text/javascript"> function getUrlParam(name) { var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象 var r = window.location.search.substr(1).match(reg); //匹配目标参数 if (r!=nu

js 获取url参数的值

//获取url参数函数function GetQueryString(name){    var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); // match()方法可在 字符串内检索指定的值,或找到一个或多个正则表达式的匹配    var r = window.location.search.substr(1).match(reg);     if(r!=null){         

js处理url参数

var UrlArgent = { Parsed: false, //是否已解析 Cache: {}, //缓存值 ParseArg: function () { // 解析地址栏的参数值 UrlArgent.Parsed = true; var url = location.search; if (-1 == url.indexOf('?')) return; var args = url.substr(1).split("&"); for (var i = 0; i <

Jquery、JS获取URL参数的方法

本篇文章主要是对javascript/jquery获取地址栏url参数的方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 使用jquery获取url以及使用jquery获取url参数是我们经常要用到的操作 1.jquery获取url很简单,代码如下 代码如下: window.location.href; 其实只是用到了javascript的基础的window对象,并没有用jquery的知识 2.jquery获取url参数比较复杂,要用到正则表达式,所以学好javascript正则式多

js获取url参数方法

通过下面函数可以返回url参数集合,以对象的形式返回. function GetRequest() { var url = location.search; //获取url中"?"符后的字串 var theRequest = new Object(); if (url.indexOf("?") != -1) { var str = url.substr(1); strs = str.split("&"); for(var i = 0; i

程序ajax请求公共组件app-jquery-http.js中url参数部分的项目应用

结合微信登录以及微信支付的案例:= =||| (案例比较奇葩复杂) 简述项目流程: 1.获取用于公众号支付的openid(公众平台):在微信内置浏览器中打开网页链接,刚进入页面就通过微信公众平台获取该微信用户的code,拿到code传给后台,换取用户的openid. 2.微信登录(开放平台):微信登录通过微信开放平台,由于第一步公众平台拿到的code会混淆开放平台的code,导致用户使用微信登录失败,就需要使用该插件将url参数重置. 3.微信支付(公众平台):像后台传输步骤一获取的openid