2016-02-11 2 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

Я не знаю, почему я получаю два результата, я думал, что регулярное выражение вернет только одно.

Теперь у меня есть цикл для вычисления всех значений, которые выбраны и дать его мне, как одна большая сумма:

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]' это целое совпадение, а остальные элементы - содержимое групп захвата. 'result [1]' - это то, что вы хотите. –

ответ

1

Если вы посмотрите на regex documentation вы можете увидеть, он возвращает:

Массив, содержащий весь результат матча и любые Скобки захваченное соответствует результатам, или нулевое значение, если не было никаких матчей.

Ваш первый элемент массива - это все выражение, соответствующее регулярному выражению. Второй элемент, который вы видите, - это значение, извлеченное из группы соответствия (ваша скобка). Используйте второе значение напрямую.

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

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

Вот что говорит о MDN String.prototype.match (page): метод

матча() возвращает спички при совпадении строки с регулярным выражением.

С вашим текущим регулярным выражением есть элемент (в массиве, возвращаемом с String.match) для соответствия всему регулярному выражению. Это объясняет первый результат ({853269}).

Второй элемент в результирующем массиве (853269) исходит из group, который вы определили в своем регулярном выражении.

Смежные вопросы