我现在对正则表达式非常沮丧。给出:
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是否有字符串匹配器的结尾?
答案 0 :(得分:3)
您可以使用以下正则表达式。
var matches = text.match(/.+\n*/g);
或者您可以将换行符序列“一次或多次”或字符串的结尾匹配。
var matches = text.match(/.+(?:\n+|$)/g);
答案 1 :(得分:2)
试试这个:/(.+\n*)/g
答案 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(/.+/克)