javascript - 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 以替换字符前面的所有双反斜杠?
解决方案
没有用转义序列替换文字的捷径,但您可以使用它:
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)
推荐阅读
- apache-kafka - 连接到具有多个分区的 Kafka 集群的 Flink 消费者的 java.lang.RuntimeException
- c - clang - macOS 上的 linux 交叉编译
- python - 如何在 Python 中垂直打印每个变量
- r - 无法取消嵌套具有不同列类型的列表数据框
- java - JAVA:无法理解如何处理输入文件
- mysql - 如何显示所有重复值
- c++ - 曼哈顿距离比曼哈顿距离+线性冲突效果更好
- excel - Excel - 将以 Z 结尾的 ISO8601 日期转换为适合输入“带有时区的时间戳”类型的 Postgres 字段的格式
- javascript - 使用带有数据的数组使用带有模板的迭代 #each 来制作元素
- google-bigquery - Big query error:Failed to parse input string