2010-12-08 200 views
1

我試圖獲得匹配數,因爲它匹配兩個。現在我只是從console.log()獲得一個。返回匹配數

<script type="text/javascript"> 

var page = 
'<tr class="Row">' + 
    '<td class="1"><p>12/31/2010</p></td>'+ 
    '<td class="2">'+ 
       '<p>text</p>'+ 
    '</td>'+ 
'</tr>'+ 
'<tr class="Row">' + 
    '<td class="1"><p>12/01/2009</p></td>'+ 
    '<td class="2">'+ 
       '<p>text</p>'+ 
    '</td>'+ 
'</tr>' 
; 

var pattern = /<td class="1"><p>((\d){2}(?=\/)\/(\d){2}(?=\/)\/20(\d){2})<\/p><\/td>/; 
var match = page.match(pattern); 
console.log(page); 
console.log(match); 

</script> 

有沒有辦法檢索所有的匹配。

回答

0

我傾向於在模式的結尾在JavaScript中使用.exec()爲正則表達式與g修改。然後,您可以通過調用這個多次迭代的比賽,直到match爲空:

var pattern = /<td class="1"><p>((\d){2}(?=\/)\/(\d){2}(?=\/)\/20(\d){2})<\/p><\/td>/g; 
var match = pattern.exec(page); 
console.log(page); 

while(match){ 
    console.log(match); 
    match = pattern.exec(page); 
} 

看到這個工作:http://jsfiddle.net/jonathon/EtpQp/

3

只是使用的選項。

pattern = /.../gm; 
+0

有一個問題這一點。它消除了匹配[1]。應該是2010年12月31日的日期。 – 2010-12-08 12:24:38

+0

+1爲你pinichi – 2010-12-08 12:30:02