IE11 正则表达式意外结果

IE11 Regular Expression Unexpected Result

我有这个正则表达式 /(\d\d|\d).(\d\d|\d)/,我正在 06/16/2018 上执行它作为输入字符串。在 Chrome 中,它按预期工作,给出 ["06/16", "06", "16"] 作为匹配结果。在 IE11 中,它给我 ["2018", "20", "8"] 作为结果。但是,当我尝试直接在控制台中重新创建它时,它在两种浏览器中都可以正常工作。知道这里会发生什么吗?

对于背景,这实际上是在第三方库 flatpickr v4.5.0 中执行的,但我正在调试该代码以查看发生了什么。

有关示例,请参见下面的 IE11 调试器屏幕截图。我不知道这是怎么发生的。

这对我来说没有任何意义,(\d\d|\d).(\d\d|\d) 怎么可能将 06/16/2018 匹配为 2018 而不是 06/16。另外,看看 matchindex 属性。 11?这怎么可能呢?输入字符串的长度只有 10.

这是一个 link 到 code sandbox 的演示。

我最终弄清楚了这个问题,所以我想在这里跟进,以便将来发现此问题的任何人。

正如您在我上面发布的代码沙箱 link 中看到的那样,我使用 Date.toLocaleDateString 获取格式化的日期字符串。显然,在 IE11(和 Edge)中,包含了一些额外的从左到右的字符,这会影响格式化日期值的解析。一旦我摆脱了这些字符,这个问题就解决了。

作为参考,这是我为跟踪此问题而打开的 GitHub 问题:https://github.com/IBM/carbon-components-react/issues/1325