-1

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

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

有关示例,请参见下面的 IE11 调试器屏幕截图。我无法弄清楚这是怎么发生的。

来自 IE 调试器的屏幕截图

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

这是一个代码沙箱的链接,其中演示了这一点。

4

1 回答 1

1

我最终解决了这个问题,所以我想在这里为将来发现这个问题的任何人跟进。

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

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

于 2018-09-20T14:42:31.843 回答