在javascript中替换换行符字符串文字 - '\ n'

时间:2015-09-14 18:28:51

标签: javascript regex

我在变量中有字符串文字\n。我试图用空字符串替换它。但它不起作用。

var value = "\\\n"
value = value.replace(/(?:\\[rn])+/g, "")
console.log(value)

值的计算结果为字符串文字 - \n。我希望console.log没有输出。但它打印

\

空行后跟反斜杠(由于某种原因,堆栈溢出修剪了上面输出中的空行)。

请注意,此问题与替换换行符 - \n

无关

4 个答案:

答案 0 :(得分:5)

不要像\\[rn]那样。即,不要将反斜杠与rn分开。这会改变它的含义。

value.replace(/[\r\n]+/g, "")

如果您还想替换回车符或换行符之前存在的反斜杠字符,请在字符类之前添加\\

value.replace(/\\[\r\n]+/g, "")

答案 1 :(得分:4)

  

我在变量

中有字符串文字\n

不,不。你有\(newline),这是一个完全不同的事情。

var value = "\\\n"

value是一个长度为2的字符串。第一个字符是反斜杠。第二个字符是换行符。

value = value.replace(/(?:\\[rn])+/g, "")

您的正则表达式尝试替换字母r或字母n后面的文字反斜杠。但是您的输入包含第二个位置的换行符。换行符既不匹配r也不匹配n。因此,没有任何内容被替换,value保留其原始值。

更清楚地看到这一点:

> for (i = 0; i < value.length; i++) console.log(value.charCodeAt(i));
< 92
< 10  // this is a newline

您可能对Chrome devtools控制台中的一些非直观行为感到困惑。 console.log('\n')按预期打印空行。但是,console.log('a\n')仅打印a,没有明显的换行符。换句话说,Chrome devtools(以及FF)在某些情况下似乎会抑制最终的尾随换行符。

答案 2 :(得分:3)

您应该使用:

value = value.replace(/\\[\r\n]+/g, "");
// ""

这将取代\r\n,后面跟着输入中的文字\

答案 3 :(得分:0)

这个效果很好.replace(/\\r\\n?|\\n/g, '\n');