使用 JS 正则表达式对象,是否可以使用单个或几个组来匹配重复模式?
例如,将以下内容作为输入:
#222<abc#321cba#123>#111
是否可以使用类似于以下的正则表达式来匹配“#321”和“#123”(但不能匹配 #222 或 #111,因为它们在 /<.*?>/
组之外):
/<.*?(?:(#[0-9]+).*?)>/
(当前仅匹配第一个实例),当输入中的匹配数未知时?
最佳答案
你必须循环内部模式。
首次使用/<(.*?)>/
提取它:
var outerRegex = /<(.*?)>/;
var match = outerRegex.exec(input);
var innerPattern = match[1];
接下来,迭代结果:
var innerRegex = /#\d+/g;
while (match = innerRegex.exec(innerPattern))
{
var result = match[0];
...
}
关于javascript - 在正则表达式中使用单个组匹配重复模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25814894/