正则表达式:匹配除第一个换行符之外的所有换行符

kyw*_*kyw 3 javascript regex

假设我有这样的文本块:

* hello

  
world



hello again
Run Code Online (Sandbox Code Playgroud)

在 Javascript 中使用 RegEx,如何\在所有平台中替换除第一个之外的所有段落之间的新行?

那么有效的结果就是,

* hello

\
world

\
\
hello again
Run Code Online (Sandbox Code Playgroud)

bob*_*ble 6

您可以捕获一个非换行符(通常是点)和一个可选的换行符,然后使用回调来检查是否设置了第一个组。如果是,则返回完整匹配,否则在换行符前添加反斜杠。

const s = `* hello


world



hello again`;

const res = s.replace(/(.\n?)?\n/g, (m0, m1) => m1 ? m0 : '\\\n');

console.log(res);
Run Code Online (Sandbox Code Playgroud)

  • 为了防止在开始时出现可能的匹配,请使用lookahead(.\n?)?(?!^)\n
  • 考虑水平空间的线条:(^[ \t]*|\S\n?)?[ \t]*(?!^)\n