2014-03-16 3 views
2

Мне нужно найти слово в тексте. Для этого я использовал это регулярное выражение:Сохранение только части соответствия регулярному выражению

var re =/duration='\d+'/ig; 
var i = text.match(re); 

Это дает мне множество матчей, как "duration='300'", "duration='400'",...

Мне нужно только цифры. без duration=''

ответ

0

Вы можете использовать capturing group:

var re = /duration='(\d+)'/ig; 
var match = re.exec(text); 
while (match != null) { 
    // matched text: match[1] 
    match = re.exec(text); 
} 
+0

Это не то, что я хочу – user3425017

+0

@ user3425017: Пожалуйста, будьте более конкретными. –

0

ответ Тима хорошо работает (и я не знаю, почему О.П. говорит, что это не то, что он/она хочет). Тем не менее, здесь есть еще один способ сделать это с помощью метода String.replace() со значением замены функции обратного вызова:

function getDurations(text) { 
    var re =/duration='(\d+)'/ig; 
    var i = []; 
    text.replace(re, function(m0, m1){i.push(m1); return '';}); 
    return i; 
} 

Обратите внимание, что этот метод не требует цикла и является достаточно эффективным получить работу в одном операторе.

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