Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript .split()带有捕获括号的正则表达式在IE8中不起作用_Javascript_Regex_Internet Explorer 8 - Fatal编程技术网

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中不起作用的功能。