根据我的测试
"aba".split(/a/).length
返回
- 1 英寸 IE8
- 3 在火狐, 铬, 歌剧
我一直准备好处理 DOM 操作或事件模型的差异,但我认为字符串、正则表达式等东西是明确定义的。我错了吗?
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
返回的数组。或者使用一些技巧。