正则表达式在换行符 前面有两个空格

Regex precede newline with two spaces

本文关键字:两个 空格 换行符 前面 正则表达式      更新时间:2023-09-26

我有一个包含换行符的字符串('n)。

我想让所有'n前面有两个空格。

var str = "First line'nSecondd Line 'nThirdLine ''n";
str = str.replace(/'n/g, '  ''n')

以上有效,但每次保存时都会添加更多空间。

如果前面已经有两个空格,我怎么能不理会它?

当换行符前没有空格时替换:

var str = "First line'nSecondd Line 'nThirdLine ''n";
str = str.replace(/('S)'s{0,2}'n/g, '$1  ''n')

这个简单的正则表达式就是您所需要的:

/ {0,2}'n/g

基本上,它的工作原理是,以前"替换"的字符串在每个换行符之前已经有两个空格,因此它也捕获并替换了这些空格。

var str = "First line'nSeconnd Line 'nThirdLine ''n";
str = str.replace(/ {0,2}'n/g, '  'n');
// str === "First line  'nSeconnd Line  'nThirdLine ''n"

看看它在这里捕获了什么,看看它在这里替换了什么。

编辑

抱歉,我之前的假设是您希望将换行符替换为两个空格,然后是另一个换行符。

我没有注意到您希望转义换行。

但是,这很容易做到:

replace(/ {0,2}'n/g, '  ''n');

只需转义反斜杠,请参阅此处的较新版本。