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  
}  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值