Dường như regex /\r\n|\r|\n/xử lý các kết thúc dòng CR, LF và CRLF, các chuỗi hỗn hợp của chúng và giữ tất cả các dòng trống ở giữa. Hãy thử điều đó!
function splitLines(t) { return t.split(/\r\n|\r|\n/); }
// single newlines
splitLines("AAA\rBBB\nCCC\r\nDDD");
// double newlines
splitLines("EEE\r\rFFF\n\nGGG\r\n\r\nHHH");
// mixed sequences
splitLines("III\n\r\nJJJ\r\r\nKKK\r\n\nLLL\r\n\rMMM");
Bạn sẽ nhận được các mảng như là kết quả:
[ "AAA", "BBB", "CCC", "DDD" ]
[ "EEE", "", "FFF", "", "GGG", "", "HHH" ]
[ "III", "", "JJJ", "", "KKK", "", "LLL", "", "MMM" ]
Bạn cũng có thể dạy regex đó nhận ra các đầu cuối dòng Unicode hợp pháp khác bằng cách thêm |\xHHhoặc |\uHHHHcác phần, trong đó Hlà các chữ số thập lục phân của mã ký tự kết thúc bổ sung (như đã thấy trong bài viết Wikipedia như U+HHHH).