Javascript | 无法将\ n替换为String.replace()

Nic*_*eny 2 javascript parsing replace node.js

我有解析网站并从数据库中获取信息的代码。看起来像这样:

var find = body.match(/\"text\":\"(.*?)\",\"date\"/);
Run Code Online (Sandbox Code Playgroud)

结果,我有:

????????? ?? ???? ????????? \ n ?????????? ?? ????????? \ n ?????????? ?? ???? \ n ???????? ?????? \ n ?????????? ??????????

然后我尝试替换\ n,但是它不起作用。

var str = find[1].replace(new RegExp("\\n",'g'),"*");
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

Luk*_*ard 7

看起来您想替换文本\n,即反斜杠后跟一个n,而不是换行符。

在这种情况下,您可以尝试

var str = find[1].replace(/\\n/g, "*");
Run Code Online (Sandbox Code Playgroud)

或可读性较低的版本

var str = find[1].replace(new RegExp("\\\\n", "g"), "*");
Run Code Online (Sandbox Code Playgroud)

在正则表达式中,字符串\n与换行符匹配。要匹配反斜杠字符,我们需要通过在其前面加上另一个反斜杠来对其进行“转义”。 \\在正则表达式中匹配一个\字符。同样,在JavaScript字符串文字中,\是转义字符,因此我们在编写时需要再次在正则表达式中转义两个反斜杠new RegExp("\\\\n", "g")。

  • 你好。我已经尝试了这两种解决方案,但它们之间似乎有所不同。第一个不起作用,但第二个是?!有人可以解释我为什么吗? (2认同)