Javascript 将正则表达式 \\n 替换为 \n,将 \\t 替换为 \t,将 \\r 替换为 \r 等等
Posted
技术标签:
【中文标题】Javascript 将正则表达式 \\\\n 替换为 \\n,将 \\\\t 替换为 \\t,将 \\\\r 替换为 \\r 等等【英文标题】: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") 等等。 【参考方案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)
【讨论】:
以上是关于Javascript 将正则表达式 \\n 替换为 \n,将 \\t 替换为 \t,将 \\r 替换为 \r 等等的主要内容,如果未能解决你的问题,请参考以下文章
如何替换 Javascript 中的正则表达式子字符串匹配?