Javascript 将正则表达式 \\n 替换为 \n,将 \\t 替换为 \t,将 \\r 替换为 \r 等等

Javascript replace regexp \\n with \n, \\t with \t, \\r with \r and so on

我有一个 HTML 输入字段,用户可以在其中输入分隔符。

这个分隔符可以包括\n, \t, \r等等。当我将分隔符附加到 javascript 中的字符串时,它附加为 \n 而不是换行符。

虽然我可以使用 str.replace(/\n/g, "\n") 等来替换一个变体,但如果我写一个通用的包罗万象的正则表达式(如 str.replace(/\([a-z])/g, "$1")),它就不起作用,因为这只是再次将 \n 替换为 \n .

我如何重写 RegExp 以替换字符前面的所有双反斜杠?

没有用转义序列替换文字的快捷方式,但您可以使用此方法:

const cmap = {'n': '\n', 't': '\t', 'r': '\r'}

var str = `value1\rvalue2\tvalue3\nvalue4`

str = str.replace(/\([nrt])/g, m => {return cmap[m[1]]})

console.log(str)