替换换行符字符串文字-'\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
那样将反斜杠字符视为单独的字符,因为\本身没有任何特殊意义。