使用JS regex对象,是否可以使用单个或几个组匹配重复模式?
例如,将以下内容作为输入:
#222<abc#321cba#123>#111
是否可以使用类似于以下内容的正则表达式匹配“#321”和“#123”(但不是#222或#111,因为它们位于/<.*?>/
组之外):
/<.*?(?:(#[0-9]+).*?)>/
(当前只与第一个实例匹配),当输入中的匹配数未知时?
答案 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];
...
}