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

时间:2009-12-18 13:41:13

标签: javascript regex internet-explorer

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

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

有人知道原因吗?如果可能的话,我们将非常感谢参考链接。

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

3 个答案:

答案 0 :(得分:6)

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

所以

"foo".split(/o/)

IE给出了

[f]

其他浏览器提供

["f","",""]

当你添加捕获时:

"foo".split(/(o)/)

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

["f","o","","o",""]

所以不幸的是,您可能需要避免使用拆分或围绕这些问题进行编码。

答案 1 :(得分:3)

答案 2 :(得分:1)

我遇到了与拆分的IE实施相同的问题。

这是一个小library文件,可以完美地解决问题。