Javascript 拆下新的管路

Javascript 拆下新的管路,javascript,regex,newline,Javascript,Regex,Newline,我想用一个空格替换单个新行,就像我有这样的字符串: "foo\nbar\nbaz\n\nquux" 我想要 "foo bar baz\n\nquux" 我尝试过这个正则表达式:/\n(?!\n)/但它不起作用。它用空格替换一行新行,但也替换一行后面有新行的新行。试试这个: "foo\nbar\nbaz\n\nquux".replace(/([^\n])\n(?!\n)/g,"$1 ") 您的原始版本跳过了配对中的第一个\n,然后替换了第二个(因为后面没有\n)。您需要检查它后面或前面没有\

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

"foo\nbar\nbaz\n\nquux"
我想要

"foo bar baz\n\nquux"
我尝试过这个正则表达式:
/\n(?!\n)/
但它不起作用。它用空格替换一行新行,但也替换一行后面有新行的新行。

试试这个:

"foo\nbar\nbaz\n\nquux".replace(/([^\n])\n(?!\n)/g,"$1 ")
您的原始版本跳过了配对中的第一个
\n
,然后替换了第二个(因为后面没有
\n
)。您需要检查它后面或前面没有
\n
$1
将匹配的非换行符放回。不幸的是,javascript不支持非消耗性外观落后

(^|(?!\n).)\n(?!\n)
答案的另一个变体。请参见演示。替换为
$1


@ochi这是怎么回事?所做的就是匹配两个新行。@ochi这将匹配两个新行,我想匹配一个。很抱歉误读了问题,已删除comment@iismathwizard我不想匹配所有新行,只匹配一行新行,后面没有新行。@jcubic我也误读了这个问题。我道歉。