删除新行,除非新行前面有双倍空格

时间:2015-04-24 20:21:28

标签: javascript regex

我想从文本中删除新行,除非句子以双空格结尾(我正在使用JavaScript)。

此:

This
is
a
test.

应该转向:

This is a test.

但是这个:

This
is  //there is a double space here
a//but not here
test.

应该转向:

This is
a test.

到目前为止,我的方法是:我可以替换多个空格,然后使用一个新行替换新行:

var doubleSpaceNewline = new RegExp(/(\s){2,}\n/g);
test = text.replace(doubleSpaceNewline, '\n');

但是,如何删除新行,而不删除我想要保留的新行?

我更愿意删除所有新行,除了前面有两个或更多空格的换行符,然后用单个换行替换双倍空格+换行符。

除了\s+之外,我需要一个与(\s){2,}\n匹配的正则表达式。似乎无法将两者结合起来。

2 个答案:

答案 0 :(得分:3)

text = text.replace("  \n", '****************');

text = text.replace("\n", ' ');

text = text.replace('****************', "  \n");

这就是你要追求的吗?不使用正则表达式,但它的程序更简单。

答案 1 :(得分:1)

要查找"如果没有先行,则会有一个新行但是或更多(在代码中通过{2,}判断)空格"在正则表达式的帮助下,您可以使用negative lookbehind。找到它的代码是

(?<!\s{2,})\n

然后像往常一样更换。