Looking at this sample :
>\'1,2,3,4,5\'.split(/,/)
Result : [\"1\", \"2\", \"3\", \"4\", \"5\"]
But looking at thi
From the blog of Steven Levithan and XRegExp website, it is confirmed that the correct behavior (inclusion of text captured by capturing groups in the result array) is not implemented up to Internet Explorer 8.
I have independently confirmed this result on browserstack, and further confirmed that the behavior of String.split when a regex with capturing group is supplied is correctly implemented for Internet Explorer only from version 10 onwards.
Below are links to relevant screenshots:
Full source code of the test site:
<html>
<head>
</head>
<body>
<script type="text/javascript">
document.write("<h1>Testing String.split, given regex with capturing group</h1>");
function runTest(num, actual, expected) {
var equals = true;
if (actual.length === expected.length) {
for (var i = 0; i < actual.length; i++) {
if (actual[i] !== expected[i]) {
equals = false;
break;
}
}
} else {
equals = false;
}
document.write("<h2>Test " + num + ":</h2>");
document.getElementsByTagName('body')[0].appendChild(document.createTextNode("'" + actual.join("' '") + "'"));
document.write(equals ? "<h2>Compliant to ECMA 5.1</h2>" : "<h2>NOT compliant to ECMA 5.1</h2>");
}
</script>
<script type="text/javascript">
runTest(1, '1,2,3,4,5'.split(/(,)/), ["1", ",", "2", ",", "3", ",", "4", ",", "5"]);
</script>
<script type="text/javascript">
runTest(2, 'ABCDEF'.split(/()/), ["A", "", "B", "", "C", "", "D", "", "E", "", "F"]);
</script>
<script type="text/javascript">
runTest(3, 'text<a>text</a>'.split(/<(\/)?([^>]+)>/), ["text", void 0, "a", "text", "/", "a", ""]);
</script>
</body>
</html>