【发布时间】:2018-09-14 16:45:58
【问题描述】:
我有这个正则表达式/(\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。
这是一个指向 code sandbox 的链接,其中演示了这一点。
【问题讨论】:
-
请添加一个minimal reproducible example来显示实际问题
-
这听起来像同一个 RegExp 对象在同一个字符串上被
executed 两次 -
@Thomas 据我所知,RegExp 是在每次
execed 时创建的,所以我认为这不是问题。
标签: javascript internet-explorer internet-explorer-11 flatpickr