js分解url引數(正則表示式,split比較)(面向物件-極簡主義法應用)
阿新 • • 發佈:2019-02-10
一:正則表示式法
注:<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() 方法用於檢索字串中的正則表示式的匹配。太強大了,還不會用
參考
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 }