正则表达式替换在节点中不像在控制台中那样工作

时间:2017-09-14 09:41:01

标签: javascript node.js regex

我需要在句子中删除所有逗号。我的替换在节点中没有正常工作,但是在Chrome控制台中它工作正常。

有没有人有解决方案?对于所有角色来说似乎都是一样的

let sentence = 'Hello, my name is Jim'

sentence.replace(/,/g, '\\,');

NODE TERM的输出:'Hello\\, my name is Jim'

最终字符串应为'Hello\, my name is Jim'

此外,如果有人解释为什么除了节点控制台以外它在任何地方都能正常工作!

非常感谢

2 个答案:

答案 0 :(得分:3)

解释了这种行为here

  

默认情况下,go = True def loop(): response1 = input ("Enter number: ") print ("Thank you for " + response1) number1 = int(response1) response2 = input ("Enter second number: ") print ("Thank you for " + response2) number2 = int(response2) if int(number1) == int(number2): print (str(number1) + " is equal to " + str(number2)) elif int(number1) != int(number2): print (str(number1) + " is not equal to " + str(number2)) while go: loop() 实例使用repl.REPLServer方法格式化输出,然后将输出写入提供的util.inspect()流(默认情况下为Writable)。

换句话说,这就是"发生的事情"引擎盖":

process.stdout

const { inspect } = require('util') let sentence = 'Hello, my name is Jim' console.log( inspect( sentence.replace(/,/g, '\\,') ) ); 转义字符串,因此inspect变为\(字符串也会被引号括起来)。

您可以通过自己从REPL输出字符串来解决这个问题:

\\

答案 1 :(得分:0)

我怀疑Chrome和Node.js的工作原理是相同的,他们只是以不同的方式打印结果。

当您只打印字符串的长度而不是字符串本身时,它可能是相同的。

Node.js然后以易于复制的格式打印字符串。糊。它是一个有效的JavaScript字符串文字。

另一方面,Chrome会按原样打印所有字符,可能会使用不同的颜色标记字符串的开头和结尾。将字符串从JavaScript控制台复制到剪贴板然后将其粘贴到某处时,反斜杠可能会翻倍。