Wygląda na to, że regex /\r\n|\r|\n/obsługuje zakończenia linii CR, LF i CRLF, ich mieszane sekwencje i zachowuje wszystkie puste wiersze pomiędzy nimi. Spróbuj tego!
function splitLines(t) { return t.split(/\r\n|\r|\n/); }
splitLines("AAA\rBBB\nCCC\r\nDDD");
splitLines("EEE\r\rFFF\n\nGGG\r\n\r\nHHH");
splitLines("III\n\r\nJJJ\r\r\nKKK\r\n\nLLL\r\n\rMMM");
W rezultacie powinieneś otrzymać te tablice:
[ "AAA", "BBB", "CCC", "DDD" ]
[ "EEE", "", "FFF", "", "GGG", "", "HHH" ]
[ "III", "", "JJJ", "", "KKK", "", "LLL", "", "MMM" ]
Możesz również nauczyć to wyrażenie regularne rozpoznawania innych legalnych terminatorów linii Unicode , dodając |\xHHlub |\uHHHHczęści, gdzie Hsą szesnastkowe cyfry dodatkowego punktu kodowego znaku terminatora (jak widać w artykule w Wikipedii jako U+HHHH).