Javascript 是否有任何标准规定“如果”;aba";。split(/a/)应该返回1、2或3个元素吗?

Javascript 是否有任何标准规定“如果”;aba";。split(/a/)应该返回1、2或3个元素吗?,javascript,string,split,Javascript,String,Split,根据我的测试 "aba".split(/a/).length 返回 ie8中的1 3在firefox、chrome和opera中 我一直准备处理DOM操作或事件模型中的差异,但我认为字符串、regexp等都有很好的定义。我错了吗?IE将从分割结果数组中删除所有未定义或空字符串 因为您的问题似乎是关于标准的存在,所以EcmaScript是Javascript世界中最好的匹配 并且记录了在正则表达式上拆分的行为: 从示例中可以明显看出,不应从生成的数组中删除空字符串,因此IE(如怀疑的)是错误

根据我的测试

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

  • ie8中的1
  • 3在firefox、chrome和opera中

我一直准备处理DOM操作或事件模型中的差异,但我认为字符串、regexp等都有很好的定义。我错了吗?

IE将从
分割结果数组中删除所有未定义或空字符串

因为您的问题似乎是关于标准的存在,所以EcmaScript是Javascript世界中最好的匹配

并且记录了在正则表达式上拆分的行为:

从示例中可以明显看出,不应从生成的数组中删除空字符串,因此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
返回的数组进行适当的测试。或者使用一些技巧

好问题。“我错了吗?”-显然你错了。但你不是唯一一个被这件事抓住的人。当我尝试IE9时,它返回
3
,但只有在没有在IE7或IE8文档模式下运行的情况下……我本想责怪IE8,但IE9(在空文档的IE9模式下)也返回
1
。相关:,显然你错了。但问题是:这只是
string.split
中的一个示例或正则表达式用法吗?因为在这种情况下,只要在
“a”
上拆分就更有效了。@Jan StefanJanetzky:我没这么说。但是如果你在一个字符上做一个简单的分割,使用正则表达式有点过分了。