代码之家  ›  专栏  ›  技术社区  ›  YOU

有人知道为什么是“x”.split(/(x)/).length在ie中返回0吗?

  •  6
  • YOU  · 技术社区  · 15 年前

    在伊江, "x".split(/(x)/).length 收益率 0

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

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

    我相信这是一个IE regex实现问题,但我找不到任何有关这方面的文档。

    3 回复  |  直到 14 年前
        1
  •  6
  •   Shaun    15 年前

    您认为存在实现问题是正确的。IE都会忽略空值并捕获正则表达式中的块。

    所以

    "foo".split(/o/)
    

    IE给出

    [f]
    

    其他浏览器提供的

    ["f","",""]
    

    当您添加捕获时:

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

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

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

    所以不幸的是,您可能需要避免使用split,或者围绕这些问题编写代码。

        2
  •  3
  •   Patrick    15 年前
        3
  •  1
  •   Larry K    14 年前

    我对split的中断IE实现也有同样的问题。

    这里有一个小的 library 完美解决问题的文件。