任何人都知道为什么"x".split(/(x)/).长度在IE中返回0?

YOU*_*YOU 6 javascript regex internet-explorer

在IE中,"x".split(/(x)/).length返回0

在Firefox,Chrome,Safari和Opera中,它会返回3.

有人知道原因吗?如果可能,将非常感谢参考链接.

我相信这是一个IE正则表达式实现问题,但我找不到任何关于它的文档.

Sha*_*aun 6

你确实存在实施问题.IE都忽略空值并捕获正则表达式中的块.

因此对于

"foo".split(/o/)
Run Code Online (Sandbox Code Playgroud)

IE给出了

[f]
Run Code Online (Sandbox Code Playgroud)

其他浏览器给出的位置

["f","",""]
Run Code Online (Sandbox Code Playgroud)

当你添加捕获时:

"foo".split(/(o)/)
Run Code Online (Sandbox Code Playgroud)

IE执行相同的操作,但其他人将捕获的分隔符添加到结果数组中

["f","o","","o",""]
Run Code Online (Sandbox Code Playgroud)

所以不幸的是,你可能要么避免使用拆分,要么围绕这些问题进行编码.