function getCookie(name)//取cookies函數 { //coook中document.cookie = "age=12; name=1.css"; var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)")); if (arr != null) return unescape(arr[2]); return null; } //getCookie(name); //arr[0]="name=1.css" //arr[1]="" //arr[2]="1.css" //arr[3]="" //爲何arr返回的長度爲4的數組? //在博客園和csdn問了好多都沒有一個準確的回答,以後在一步一步實驗中發現了答案 //第一步:先匹配"(^| )" + name + "=([^;]*)(;|$)" //第二步:在匹配()裏面的也就是(^| ),([^;]*),(;|$) //答案就是"(^| )" + name + "=([^;]*)(;|$)",(^| ),([^;]*),(;|$).也就返回了arr長度爲4的數組 //注意:必定要第一步能匹配,纔會進行第二步匹配.否者直接返回null //由此觸類旁通,咱們在用javascript獲取參數時也以用這個 function Request(name) { //url=http://localhost:9120/Cookie.html?mly=1&c=12 var arr = window.location.search.match(new RegExp("([(^)(&)(?)])" + name + "=([^&]*)(&|$)")); if (arr != null) return unescape(arr[2]); return null; } //Request("mly"); //返回1 //注意:在前面咱們說過()會屢次匹配,在()中繼續加()還會繼續匹配 //例如:"12".match(new RegExp("((1))2"))會返回長度爲3的數組,arr[0]=12,arr[1]=1,arr[2]=1; //例如:"12".match(new RegExp("((1)|(2))2"))會返回長度爲4的數組,arr[0]=12,arr[1]=1,arr[2]=1,arr[3]=undefined; //arr[3]=undefined在右邊(2)在第一次匹配時沒有用到,之後在與(2)匹配時直接返回undefined;這也證實了有多少個()就會返回()+1個長度的數組 //其中在([(^)(&)(?)])中屢次用了(),可是由於在[]中,就不須要遵循以上規則了