天天看點

JavaScript中使用正則比對多條,且擷取每條中的分組資料

該問題在使用Ajax遠端擷取某網頁資料時經常遇見

如果目标頁面是XML,就好辦了,實用XMLDOM可以很輕松完成任務。

不過我要面對的是一個很松散的HTML頁面,無法XML

是以,本文的重點在于如果要擷取的網頁中有Table或List段落,需要将這些段落的資訊按照列的方式儲存到JS的數組中

直接貼代碼:

 1 var str = "字元串字元串<table><tr><th>ID</th><th>姓名</th><th>電話</th></tr><tr><td>01</td><td>張三</td><td>1234567</td></tr><tr><td>02</td><td>李四</td><td>343434</td></tr><tr><td>03</td><td>王五</td><td>685654</td></tr></table>字元串字元串";   

 2  var regRecord = new RegExp('\\<tr>\\<td>([0-9]{2})\\<\\/td\\>\\<td>([^\\<]+)\\<\\/td\\>\\<td>([0-9]+)\\<\\/td\\>\\<\\/tr\\>','g');   

 3   

 4  var fieldIndex = { 'Id' : 1 , 'Name' : 2 , 'Phone' : 3 }   

 5   

 6  var g_records = [],record;   

 7  while ((record = regRecord.exec(str)) != null){   

 8     g_records.push({   

 9         'Id' : RegExp["$"+fieldIndex.Id]   

10         ,'Name' : RegExp["$"+fieldIndex.Name]   

11         ,'Phone' : RegExp["$"+fieldIndex.Phone]   

12     });   

13 }   

14 //此時 g_records 就儲存了比對的資料表格,列印出來看看:   

15 for(var i=0;i<g_records.length;i++){   

16     alert("ID:" + g_records[i].Id + ";Name:" + g_records[i].Name + ";Phone:" + g_records[i].Phone);   

17 }  

寵辱不驚,看庭前花開花落;去留無意,望天上雲卷雲舒

繼續閱讀