我有一个正则表达式,它在每个空格处将一个字符串拆分成一个数组,并在每个匹配项中保留空格值,如下所示:
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重现正确数组的解决方法?
由于
答案 0 :(得分:4)
我不明白你为什么使用split()
和回调使事情复杂化。只是匹配而不是分裂!
/\S+\s*/g
\S+
:匹配任何非空白字符一次或多次。\s*
:匹配任何空格字符零次或多次。g
:一个匹配所有的修饰符。注意:IE8不支持Array.filter()
。