這道面試題明顯是要用到正則表達式來解決的,因爲過久沒有寫正則表達式了,一時之間居然寫不出來,因此記錄一下筆記,下面直接上代碼:面試
1 function parseUrl(str) { 2 // 判斷是否傳入參數 3 if (str) { 4 var obj = {}; 5 var queryArr = []; 6 // 正則表達式規則 7 var re = /^(http\w?):\/\/([0-9a-zA-Z\.]+)([a-zA-Z0-9\/]+)\?([a-zA-Z0-9\=\&]+)#([0-9a-zA-Z\.]+)/; 8 // 利用正則表達式將字符串分組 9 var reArr = re.exec(str); 10 if (reArr) { 11 obj.peotocol = reArr[1]; 12 obj.host = reArr[2]; 13 obj.path = reArr[3]; 14 queryArr = reArr[4].split(/[\&\=]+/); 15 obj.query = {}; 16 for (var i = 0; i < queryArr.length; i += 2) { 17 obj.query[queryArr[i]] = queryArr[i + 1]; 18 } 19 obj.hash = reArr[5] 20 return obj; 21 } else { 22 return null; 23 } 24 } else { 25 return null; 26 } 27 }
完。正則表達式