带有捕获括号的.split()正则表达式在IE8中不起作用

时间:2014-02-27 09:55:49

标签: javascript regex internet-explorer-8

我有一个正则表达式,它在每​​个空格处将一个字符串拆分成一个数组,并在每个匹配项中保留空格值,如下所示:

var str = "[This is a test]";
var foo = str.toLowerCase().split(/(\S+\s+)/).filter(function(n) {return n});

这会在所有现代浏览器上返回以下内容:

["[This ", "is ", "a ", "test]"];

但是在IE8上,我得到的只是["test]"];

似乎IE8没有正确读取\S正则表达式字符。有没有人知道IE8重现正确数组的解决方法?

由于

1 个答案:

答案 0 :(得分:4)

我不明白你为什么使用split()和回调使事情复杂化。只是匹配而不是分裂!

/\S+\s*/g

  • \S+:匹配任何非空白字符一次或多次。
  • \s*:匹配任何空格字符零次或多次。
  • g:一个匹配所有的修饰符。

注意:IE8不支持Array.filter()

Online demo