我有一个不错的正则表达式:
*(?:(?:([0-9]+)(?:d| ?days?)(?:, ?| )?)|(?:([0-9]+)(?:h| ?hours?)(?:, ?| )?)|(?:([0-9]+)(?:m| ?minutes?)(?:, ?| )?)|(?:([0-9]+)(?:s| ?seconds?)(?:, ?| )?))+
这基本上是与人类可读的时间差匹配的正则表达式。它适用于PHP、Python和Go,但出于某种原因,在Javascript上捕获组不起作用。这里是regex101上工作正常的PHP示例,显示了工作正常的捕获组。您会注意到,在将其更改为javascript(ECMAscript)模式后,捕获组只会捕获最后一个值。有人可以帮忙解释一下我哪里做错了,以及为什么它在js上不起作用吗?