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

时间:2015-02-01 17:29:33

标签: javascript regex

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

我希望所有\n前面都有两个空格。

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

以上工作但每次保存时都会增加更多空间。

如果已经有两个空格,我怎么能不管呢?

2 个答案:

答案 0 :(得分:1)

在换行符之前没有空格时替换:

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

答案 1 :(得分:0)

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

/ {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"

查看它抓取的内容here,并查看它取代的内容here

修改

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

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

但是,这很容易做到:

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

只需转义反斜杠,请参阅较新版本here