【问题标题】:Javascript replace regexp \\n with \n, \\t with \t, \\r with \r and so onJavascript 将正则表达式 \\n 替换为 \n,将 \\t 替换为 \t,将 \\r 替换为 \r 等等
【发布时间】:2020-05-24 18:23:51
【问题描述】:

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

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

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

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

【问题讨论】:

  • 正如我在帖子中所写的那样,我只想有一个通用的解决方案,而不是现在链接 .replace(/\\n/g, "\n").replace(/\ \t/g, "\t").replace(/\\r/g, "\r") 等等。

标签: javascript regex regexp-replace


【解决方案1】:

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

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)

【讨论】:

    猜你喜欢
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2017-04-12
    相关资源
    最近更新 更多