按行分割javascript中的字符串,保留换行符?

tuo*_*alo 1 javascript regex newline

如何将javascript字符串拆分为foo\nbar\baz一系列行,同时保留换行符?我想得到['foo\n', 'bar\n', 'baz']输出;

我知道有很多可能的答案 - 我只是想要找一个时髦的答案.

使用perl我会使用零宽度lookbehind断言:split /(?<=\n)/但是javascript正则表达式不支持它们.

PS.处理不同行结尾(至少\r\n)和处理丢失的最后一行(如我的例子中)的额外点.

Ahm*_*eed 5

您可以使用此模式执行全局匹配: /[^\n]+(?:\r?\n|$)/g

它匹配任何非换行符然后匹配可选\r后跟\n或字符串结尾.

var input = "foo\r\n\nbar\nbaz";
var result = input.match(/[^\n]+(?:\r?\n|$)/g);
Run Code Online (Sandbox Code Playgroud)

结果: ["foo\r\n", "bar\n", "baz"]