根据我的测试
"aba".split(/a/).length
返回
- 1 个在 ie8 中
- 3 在 firefox、chrome、opera 中
我一直准备好处理 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", ""]
其实浏览器之间还有其他的区别。一个解决方案可能是使用 cross-browser split regex script但最好只了解差异并通过适当的测试处理 split
返回的数组。或者使用一些技巧。
关于javascript - 是否有任何标准说明 "aba".split(/a/) 是否应返回 1,2 或 3 个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13524985/