在正则表达式中使用单个组匹配重复模式

时间:2014-09-12 18:51:08

标签: javascript regex

使用JS regex对象,是否可以使用单个或几个组匹配重复模式?

例如,将以下内容作为输入:

#222<abc#321cba#123>#111

是否可以使用类似于以下内容的正则表达式匹配“#321”和“#123”(但不是#222或#111,因为它们位于/<.*?>/组之外):

/<.*?(?:(#[0-9]+).*?)>/

(当前只与第一个实例匹配),当输入中的匹配数未知时?

1 个答案:

答案 0 :(得分:2)

你必须循环内部模式。 首先使用/<(.*?)>/来提取它:

var outerRegex = /<(.*?)>/;
var match = outerRegex.exec(input);
var innerPattern = match[1];

接下来,迭代结果:

var innerRegex = /#\d+/g;
while (match = innerRegex.exec(innerPattern))
{
    var result = match[0];
    ...
}