本文主要和大家分享匹配url參數的正則執行個體,希望能協助到大家。
/([^?&=]+)=([^?&=]*)/g
解釋:
前後的斜杠/是Regex的分隔字元,最後的g表示全域匹配,匹配到第一個之後不會停下來,會繼續匹配,相當於PHP裡的preg_match_all,沒有g就相當於preg_match,下面有例子說明.
()表示子組.
[^]表示字元類取反,比如[^abc]匹配的就是不是a和b和c的單個字元,[^?&=]匹配不是^和?和=的單個字元.
字元類[]後面的+和*表示量詞:
+ 等價於 {1,} 重複1次或多次
* 等價於 {0,} 重複0次或多次
var str = "foo=bar&lang=js";var reg = /[^?&=]{1,}=[^?&=]{0,}/g;console.log(str.match(reg)); //輸出 ["foo=bar", "lang=js"]var str = "foo=bar&lang=js";var reg = /[^?&=]{1,}=[^?&=]{0,}/;console.log(str.match(reg)); //輸出 ["foo=bar"]var str = "foo=bar&lang=js";var reg = /([^?&=]{1,})=([^?&=]{0,})/;console.log(str.match(reg)); //輸出 ["foo=bar", "foo", "bar"]//下面是提取參數部分為轉為對象的代碼
var getQueryObject=function (url) { url=url==null?window.location.href:url var search=url.substring(url.lastIndexOf("?")+1) var obj={} // ^?&= 匹配不是?或&或=的單個字元 var reg=/([^?&=]+)=([^?&=]*)/g search.replace(reg,function (rs,$1,$2) { debugger var name=decodeURIComponent(arguments[1]) var val=decodeURIComponent(arguments[2]) obj[name]=val return }) return obj}