首页 > 解决方案 > Javascript 将正则表达式 \\n 替换为 \n,将 \\t 替换为 \t,将 \\r 替换为 \r 等等

问题描述

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

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

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

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

标签: javascriptregexregexp-replace

解决方案


没有用转义序列替换文字的捷径,但您可以使用它:

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)


推荐阅读