可以在JavaScript中检索多个正则表达式匹配项吗?

可以在JavaScript中检索多个正则表达式匹配项吗?,javascript,regex,Javascript,Regex,我有以下JavaScript正则表达式,它匹配字符串,如“12:23:34:45”和“12:23” 我的问题是,当我查看匹配数据时,只返回了3个匹配。e、 g.对于12:23:34:45,返回的匹配项为: 12:23:34:45 34: 45 i、 e.第一个捕获组仅报告其最后一个值。我希望比赛是: 12:23:34:45 12: 23: 34: 45 这可能吗?不,这在JavaScript(以及除Perl 6和.NET之外的大多数其他正则表达式风格)中是不可能的。重复捕获组始终存储最后匹配

我有以下JavaScript正则表达式,它匹配字符串,如“12:23:34:45”和“12:23”

我的问题是,当我查看匹配数据时,只返回了3个匹配。e、 g.对于12:23:34:45,返回的匹配项为:

12:23:34:45
34:
45
i、 e.第一个捕获组仅报告其最后一个值。我希望比赛是:

12:23:34:45
12:
23:
34:
45

这可能吗?

不,这在JavaScript(以及除Perl 6和.NET之外的大多数其他正则表达式风格)中是不可能的。重复捕获组始终存储最后匹配的值。只有.NET和Perl允许您单独访问这些匹配项(例如,.NET中的
match.Groups(i).Captures

您需要两个过程,第一个用于查找字符串,第二个用于迭代匹配项并扫描它们的子值

或者使正则表达式显式:

/^([0-9]{1,2}:)?([0-9]{1,2}:)?([0-9]{1,2}:)?([0-9]{0,2})?$/
/^([0-9]{1,2}:)?([0-9]{1,2}:)?([0-9]{1,2}:)?([0-9]{0,2})?$/