2016-02-11 58 views
0

我得到的PDF文件的大小,文件名中的頁面上的JavaScript循環不加正確

console.log($(opt).text() + " selected") 

opt具有作爲abcs{853269}

這樣的價值我使用定期獲取的價值表達:

var curSize = $(opt).text(); 
console.log(curSize + "current Size"); 

var counter = 0; 
var result = curSize.match(/{(.*?)}/); 
console.log('sizee' + result); 

控制檯結果是{853269},853269

我不知道爲什麼我得到兩個結果,我認爲正則表達式只會返回一個結果。

現在我有一個for循環來計算所有被選擇的值,並把它還給了我作爲一個大的總和:

if (result !=null){ 
    for(var i=0; i< result.length; i++){ 
     counter += result[i]; 
     document.getElementById("textarea").value += result[i]; 
    } 
    console.log(counter + "Counter"); 
} 

...但它的崩潰。

+0

'result [0]'是整個匹配,其餘元素是捕獲組的內容。 '結果[1]'是你想要的。 –

回答

1

如果你看一看的regex documentation你可以看到它返回:

包含整個匹配結果的數組,如果沒有 匹配任何 括號捕獲匹配的結果,或者爲null。

數組中的第一項是與正則表達式匹配的整個表達式。您看到的第二個項目是從匹配組(您的括號)中提取的值。直接使用第二個值。

var result = curSize.match(/{(.*?)}/); 

var extractedText = undefined; 
if(result) { 
    extractedText = result[1]; 
} 
0

這裏的MDN說怎麼樣String.prototype.matchpage):對匹配正則表達式的字符串時

的match()方法檢索匹配。

根據您當前的正則表達式,有一個匹配整個正則表達式的項目(在數組中從String.match返回)。這解釋了第一個結果({853269})。

結果數組中的第二項(853269)來自您在正則表達式中定義的group