9

从我测试过的

"aba".split(/a/).length

返回

  • 1 在 ie8
  • 3 在 Firefox、Chrome、Opera 中

我一直准备好处理 DOM 操作或事件模型中的差异,但我认为字符串、正则表达式等内容已经很好地定义了。我错了吗?

4

1 回答 1

4

IE 从split结果数组中删除所有未定义或空字符串。

由于您的问题似乎是关于标准的存在,那么 EcmaScript 是 Javascript 世界中的最佳匹配。

并且记录了正则表达式拆分的行为:http : //www.ecma-international.org/ecma-262/5.1/#sec-15.5.4.14

从示例中可以明显看出,不应从结果数组中删除空字符串,因此 IE(如怀疑)是错误的。

"A<B>bold</B>and<CODE>coded</CODE>".split(/<(\/)?([^<>]+)>/)

    evaluates to the array

["A", undefined, "B", "bold", "/", "B", "and", undefined,  "CODE", "coded", "/", "CODE", ""]

实际上,浏览器之间还有其他差异。一种解决方案可能是使用跨浏览器拆分正则表达式脚本,但最好简单地了解差异并通过适当的测试处理split. 或者使用一些技巧。

于 2012-11-23T08:08:43.277 回答