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

标签 javascript regex

我在 JavaScript 中有以下正则表达式,它匹配像“12:23:34:45”和“12:23”这样的字符串

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

我遇到的问题是,当我查看匹配数据时,只会返回 3 个匹配项。例如对于 12:23:34:45,返回的匹配项是:

12:23:34:45
34:
45

即第一个捕获组只报告它的最后一个值。我希望比赛是:

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})?$/

关于javascript - 您可以在 JavaScript 中检索多个正则表达式匹配项吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6571106/

相关文章:

javascript - 如何仅在选择所有单选按钮时启用提交按钮?

javascript - AJAX 无法正确解析 url

c# - 在 C# 中使用 Regex 比较两个不同的文件夹

java - 有人知道为什么 String.matches(regex) 不能处理 ANSI 颜色字符串吗?

javascript - 如何从服务器正确提供 create-react-app 索引?

javascript - 在 JavaScript 中构建模型

java - 在 java 中使用正则表达式的更简洁的解决方案

java - 如何用正则表达式解析字符串?

python regex 可选捕获组

AJAX 请求中的 Javascript