Is there any standard which says if "aba".split(/a/) should return 1,2, or 3 elements?

javascript, split, string

Solution

IE removes from the `split` result array all undefined or empty strings.

As your question seems to be about the existence of a standard, then EcmaScript is the best match in the Javascript world.

And the behavior of split on regex is documented : http://www.ecma-international.org/ecma-262/5.1/#sec-15.5.4.14

As it obvious from the example, empty strings should not be removed from the resulting array, so IE (as suspected) is faulty.

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

    evaluates to the array

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

In fact, there are other differences between browsers. A solution could be to use a cross-browser split regex script but it's probably better to be simply aware of the differences and handle with proper tests the array returned by `split`. Or use some tricks.

Problem

From what I've tested ``` "aba".split(/a/).length ``` returns - 1 in ie8 - 3 in firefox, chrome, opera I was always prepared to handle differences in DOM manipulation, or Events model, but I've thought that things like strings, regexps, etc. are well defined. Was I wrong?

Original source

Related problems