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

替换换行符字符串文字-'\n';在javascript中,javascript,regex,Javascript,Regex,变量中有字符串文字,\n。我试图用空字符串替换它。但它不起作用 var value = "\\\n" value = value.replace(/(?:\\[rn])+/g, "") console.log(value) 值的计算结果为字符串文字-\n。我希望控制台.log没有输出。但它会打印出来 \ 空行后跟反斜杠(出于某种原因,堆栈溢出已修剪了上面输出中的空行) 注意,此问题与替换换行符无关-\n不喜欢\\[rn]。也就是说,不要将反斜杠和r,n分开。这将改变它的含义 value.re

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

var value = "\\\n"
value = value.replace(/(?:\\[rn])+/g, "")
console.log(value)
值的计算结果为字符串文字-
\n
。我希望控制台.log没有输出。但它会打印出来

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


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

不喜欢
\\[rn]
。也就是说,不要将反斜杠和
r
n
分开。这将改变它的含义

value.replace(/[\r\n]+/g, "")
如果还希望替换回车符之前的反斜杠字符或换行符,请在字符类之前添加
\\

value.replace(/\\[\r\n]+/g, "")
你应使用:

value = value.replace(/\\[\r\n]+/g, "");
// ""
这将替换输入中后跟文字的
\r
\n

变量中有字符串文字,
\n

不,你没有。您有
\(新行)
,这是一件完全不同的事情

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

value = value.replace(/(?:\\[rn])+/g, "")
您的regexp尝试将文字反斜杠替换为字母
r
或字母
n
。但是您的输入在第二个位置包含一个换行符。换行符既不匹配
r
也不匹配
n
。因此不替换任何内容,
value
保留其原始值

要更清楚地看到这一点:

> for (i = 0; i < value.length; i++) console.log(value.charCodeAt(i));
< 92
< 10  // this is a newline
(i=0;i
您可能被Chrome devtools控制台中的一些非直观行为弄糊涂了<代码>控制台.log('\n')按预期打印空行。但是,
console.log('a\n')
只打印
a
,没有明显的换行符。换句话说,Chrome devtools(以及FF)在某些情况下似乎会抑制最后的尾随换行符。

这一功能非常有效
。替换(/\\r\\n?\\\n/g,'\n')

为什么不需要输出?这是我复杂问题的一个较小示例
“\\\n”
生成反斜杠,后跟换行符。如果您的字符串字面上包含
\n
,它将是
“\\n”
。在这一点上,我不确定您真正拥有的字符串值。awesomee。。。。。你对错误很有鉴赏力。。。。错误出现在变量中,而不是模式
[\r\n]
——方括号内的任何内容都是字符类。。在字符类中,我在某个地方读到,反斜杠和普通字符类似。反斜杠是否也在方括号内保留了它的特殊属性?@MadhavanKumar:大多数特殊字符失去了它们的“特殊性”,但
\
不是其中之一。正则表达式不会像
\t
\r
\n
那样将反斜杠字符视为单独的字符,因为\本身没有任何特殊意义。