只保留正则表达式匹配的一部分

时间:2014-03-16 13:09:52

标签: javascript regex

我需要在文本中搜索一个单词。为此我使用了这个正则表达式:

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

这为我提供了一系列匹配项,例如"duration='300'", "duration='400'",...

我只需要获得数字。没有duration=''

2 个答案:

答案 0 :(得分:0)

您可以使用capturing group

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

答案 1 :(得分:0)

蒂姆的答案很有效(我不确定为什么OP说这不是他/她想要的)。也就是说,这是另一种使用String.replace()方法和回调函数替换值的方法:

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

请注意,此技术不需要循环,并且在单个语句中完成作业非常有效。