好的,在这里和谷歌上搜索高和低后,我不得不硬着头皮在这里问一个关于 IE8 中的 RegEx 的新问题。
我有以下代码:
var output = input.replace(/^\S+(\s| )+/, '');
其目的是从金额中删除货币名称,因此“kr 12 345,00”变为“12 345,00”,“NOK 12 345,00”变为“12 345,00”等等。
这在任何地方都可以正常工作,除了在 Internet Explorer 8 或更低版本中,它使输入保持不变。
最初我使用的是new RegExp()
这样做的方式,但将其更改为正则表达式文字,以查看 IE 处理这两种变体的方式之间是否存在差异 - 谢天谢地,没有:)
我也试过只用\s
and 只用 the
但这并没有什么不同。
真正奇怪的是,当在 IE 8 的 W3 School 的“Try It Yourself”页面上以“kr 12 345,00”作为输入运行上述正则表达式时,它可以正常工作!(也当第一个空格被替换为
)
所以重申一下:我看到这个问题的地方是在我的 Javascript 代码中使用正则表达式时,它位于 AngularJS 过滤器函数中(我正在定义一个过滤器),并且过滤器返回 IE8 中的原始输入(其中在 IE8 中也可以通过 console.log() 看到)。其他人为我在 IE9 中对其进行了测试,并报告说它在那里运行良好——我也在 Chrome 中进行了测试。我遇到此问题的唯一浏览器是 IE8 和 IE7。
这里到底发生了什么?