# RegExp Split \r\n in Javascript



## nrg (13. Nov 2012)

Hallo,

warum liefert folgender Split in Javascript den Wert *7*?


```
var test = "A\r\n\r\nB\r\nC\r\n";
return test.split(/(\r?\n)+/).length;
```

In Java liefert es wie erwartet *3*.

Hat jemand eine Idee?


----------



## faetzminator (13. Nov 2012)

Habs gerade getestet, hab aber ehrlich gesagt auch keine Antwort...

Edit: Höhöhö, die Group ist dafür verantwortlich. Verwende [c](?:foobar)[/c] statt [c](foobar)[/c] und du erhälst _4_ Gruppen. Letztere, leere, weil wohl Implementation nicht gleich wie in Java.


----------



## nrg (13. Nov 2012)

stimmt. so funktioniert es:


```
test.split(/[\r?\n]+/);
```

mit dem leeren am ende kann ich leben. danke


----------



## nrg (13. Nov 2012)

hier noch ein weblink:

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/split



> If separator is a regular expression that contains capturing parentheses, then each time separator is matched the results (including any undefined results) of the capturing parentheses are spliced into the output array.


----------



## xehpuk (13. Nov 2012)

Also IE8 liefert 3. Und das Mozilla-Englisch verstehe ich leider nicht. :bahnhof:


----------



## faetzminator (14. Nov 2012)

nrg, [c]/[\r?\n]+/[/c] ist aber was anderes. Da müsstest du [c]/[\r\n]+/[/c] verwenden. Oder eben, falls dir die Reihenfolge nicht egal ist...: [c]/(?:\r?\n)+/[/c].


----------

