javascript - 正则表达式在 IE8 中不起作用

标签 javascript regex internet-explorer

好吧,在在这里和 Google 上进行了高低搜索之后,我必须硬着头皮在这里提出一个有关 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 和仅使用   但这并没有什么区别。

真正奇怪的是,当使用“kr 12 345,00”作为 W3 School's "Try It Yourself" page 上的输入运行上述正则表达式时在 IE 8 中工作正常! (当第一个空格被   替换时也是如此)

重申一下:我看到这个问题的地方是在我的 Javascript 代码中使用正则表达式时,它驻留在 AngularJS 过滤器函数中(我正在定义一个过滤器),并且过滤器返回原始输入IE8(在 IE8 中也可以通过 console.log() 看到)。其他人在 IE9 中为我测试了它,并报告说它在那里工作得很好 - 我也在 Chrome 中进行了测试。我遇到此问题的唯一浏览器是 IE8 和 IE7。

这里到底发生了什么?

最佳答案

尝试

var output = input.replace(/^\S+([\s\xA0]| )+/, '');

根据here ,“在 IE8 中...\s(应包括所有空白)不包括不间断空格”。

或者更好,只需使用

var output = input.replace( /^\D+/, '' );

其中 \D 是任何非数字字符。

关于javascript - 正则表达式在 IE8 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15095862/

相关文章:

c# - 从 Facebook Marketing API 检索原始大小的图像

javascript - 使用 Javascript 的 atob 解码 base64 不能正确解码 utf-8 字符串

javascript - For 循环中的 jQuery 和 setTimeout

javascript - 运行 if/each 语句以独立选择 div 和更改背景图像位置

javascript - ReduxReducer - 正在调度但未保存到状态的对象数组

javascript - 需要从javascript中的长字符串中替换字符串

正则表达式将确保字符串中空格后的第一个字符是 `#`

css - IE9 的 Wordpress 自定义页面 CSS 问题

internet-explorer - 是否有针对 Internet Explorer 的自定义元素 polyfill?

css - IE 中的样式问题