一道关于js正则表达式的面试题
这道面试题明显是要用到正则表达式来解决的,由于太久没有写正则表达式了,一时之间竟然写不出来,所以记录一下笔记,下面直接上代码:
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 }
完。