Хм. У меня выходит так:
'a\r\nb'.split(/(\r?\n|\r)/) == ["a", "\r\n", "b"];
'a\r\rb'.split(/(\r?\n|\r)/) == ["a", "\r", "", "\r", "b"];
'a\nb'.split(/(\r?\n|\r)/) == ["a", "\n", "b"];
UPD: И все-таки чего-то я не понимаю: что все же нужно -- заменить все переводы строк на Win-style? Вроде бы вот так работает (c Win/Linux/Mac переводами строк):
str.split(/(\r?\n|\r)/).join('\r\n')