Javascript .split()带有捕获括号的正则表达式在IE8中不起作用
我有一个正则表达式,它在每个空格处将字符串拆分为一个数组,并在每个引用中保留空格值,如下所示:Javascript .split()带有捕获括号的正则表达式在IE8中不起作用,javascript,regex,internet-explorer-8,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正则表达
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复制正确阵列的解决方法吗
谢谢我不明白您为什么使用split()
和回调使事情变得复杂。只要匹配,而不是分裂
/\S+\S*/g
\S+
:将任何非空白字符匹配一次或多次
\s*
:将任何空白字符匹配零次或多次
g
:用于匹配所有对象的修改器
注意:IE8不支持Array.filter()
\s
不包括非中断空格,但IE似乎使用了一个。非中断空白是:\xa0
。因此,您的模式变成:([^\s\xa0]+[\s\xa0]+)
尝试str.replace(/\u00a0/g),)有人能解释一下为什么这在Chrome中有效吗?:)split
应该删除分隔符,不是吗?如果分隔符包含捕获括号,则在数组中返回匹配的结果。
这似乎是IE8中不起作用的功能。