如何在javascript正则表达式中获取以换行符结尾或以字符串结尾结尾的字符串列表?

时间:2015-01-24 02:41:27

标签: javascript regex

我现在对正则表达式非常沮丧。给出:

var text = "This is a sentence.\nThis is another sentence\n\nThis is the last sentence!"

我希望正则表达式回到我身边:

{"This is a sentence.\n", "This is another sentence\n\n", "This is the last sentence!"}

我想我应该使用

var matches = text.match(/.+[\n+\Z]/) 

但是\ Z似乎不起作用。 javascript是否有字符串匹配器的结尾?

5 个答案:

答案 0 :(得分:3)

您可以使用以下正则表达式。

var matches = text.match(/.+\n*/g);

Working Demo

或者您可以将换行符序列“一次或多次”或字符串的结尾匹配。

var matches = text.match(/.+(?:\n+|$)/g);

答案 1 :(得分:2)

试试这个:/(.+\n*)/g

请在此处查看:http://regex101.com/r/wK8oX3/1

答案 2 :(得分:1)

如果你想要一个数组,并且不想保持"\n"左右你可以做...

var strings = text.split("\n");

会产生

["This is a sentence.", "This is another sentence", "", "This is the last sentence!"]

如果你想摆脱那个空的字符串链一个过滤器到分裂......

var strings = text.split("\n").filter(function(s){ return s !== ""; });

也许不是你想要的东西,也不像已经提出的正则表达式那样有效。

编辑:因为torazaburo指出使用Boolean因为过滤器功能比回调更干净。

var strings = text.split("\n").filter(Boolean);

再次编辑:我一直在升级,使用/\n+/表达式甚至更酷。

var strings = text.split(/\n+/);

答案 3 :(得分:0)

获得一系列句子:

var matches = text.match(/.+?(?:(?:\\n)+|$)/g);

答案 4 :(得分:0)

你可以试试这个,

text.match(/.+/克)