Javascript for循环没有正确添加

时间:2016-02-11 19:58:11

标签: javascript regex

我在第

页的文件名称中获得了PDF文件的大小
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");
}

......但它正在崩溃。

2 个答案:

答案 0 :(得分:1)

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

  

包含整个匹配结果的数组   括号捕获的匹配结果,如果没有,则返回null   匹配。

数组中的第一个项目是正则表达式匹配的整个表达式。您看到的第二个项目是从匹配组(您的括号)中提取的值。直接使用第二个值。

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

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

答案 1 :(得分:0)

以下是MDN对String.prototype.matchpage)所说的内容:

  

match()方法在将字符串与正则表达式匹配时检索匹配。

使用当前的正则表达式,有一个项目(在String.match返回的数组中)与整个正则表达式匹配。这解释了第一个结果({853269})。

结果数组中的第二项(853269)来自您在正则表达式中定义的group