【发布时间】:2020-12-18 06:44:39
【问题描述】:
我正在尝试正则表达式匹配各种持续时间字符串(例如 1d10h、30m、90s 等),并提出了一个正则表达式字符串将字符串拆分为多个片段,但似乎我得到了两个未定义的结果在不应该存在的末端。我想这与通过 ? 分组的贪婪匹配有关,但我不知道如何解决它。
我的代码如下所示:
const regex = /^(\d+?[d])?(\d+?[h])?(\d+[m])?(\d+[s])?$/gmi
const results = regex.exec('1d10h')
我得到的结果是这样的:
[
"1d10h",
"1d",
"10h",
undefined,
undefined,
]
我只期待前三个结果(实际上,我只想要1d 和10h),但剩下的两个undefined 结果不断弹出。
【问题讨论】:
-
您有 4 个捕获组,由于它们是可选的,因此您必须在之后手动过滤掉
undefineds
标签: javascript regex matching regex-group