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
。另外,看看 match
的 index
属性。 11?这怎么可能呢?输入字符串的长度只有 10.
这是一个 link 到 code sandbox 的演示。
我最终弄清楚了这个问题,所以我想在这里跟进,以便将来发现此问题的任何人。
正如您在我上面发布的代码沙箱 link 中看到的那样,我使用 Date.toLocaleDateString 获取格式化的日期字符串。显然,在 IE11(和 Edge)中,包含了一些额外的从左到右的字符,这会影响格式化日期值的解析。一旦我摆脱了这些字符,这个问题就解决了。
作为参考,这是我为跟踪此问题而打开的 GitHub 问题:https://github.com/IBM/carbon-components-react/issues/1325
我有这个正则表达式 /(\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
。另外,看看 match
的 index
属性。 11?这怎么可能呢?输入字符串的长度只有 10.
这是一个 link 到 code sandbox 的演示。
我最终弄清楚了这个问题,所以我想在这里跟进,以便将来发现此问题的任何人。
正如您在我上面发布的代码沙箱 link 中看到的那样,我使用 Date.toLocaleDateString 获取格式化的日期字符串。显然,在 IE11(和 Edge)中,包含了一些额外的从左到右的字符,这会影响格式化日期值的解析。一旦我摆脱了这些字符,这个问题就解决了。
作为参考,这是我为跟踪此问题而打开的 GitHub 问题:https://github.com/IBM/carbon-components-react/issues/1325