删除单个新行

Remove sinlge new lines

我想用一个 space 替换单个新行,就像我有这样的字符串:

"foo\nbar\nbaz\n\nquux"

我想要

"foo bar baz\n\nquux"

我试过这个正则表达式:/\n(?!\n)/ 但它不起作用,它用 space 替换单个新行,但也有一个新行后面有新行。

试试这个:

"foo\nbar\nbaz\n\nquux".replace(/([^\n])\n(?!\n)/g," ")

您的原始版本跳过了第一个 \n,然后替换了第二个(因为它后面没有 \n)。您需要检查它在 之后或 之前没有 \n 将匹配的 non-newline 字符放回原处。不幸的是,javascript 不支持 non-consuming look-behinds.

(^|(?!\n).)\n(?!\n)

answer.See demo.Replace 的另一种变体

https://regex101.com/r/iJ7bT6/7