如何取消转义反斜杠转义字符?

时间:2021-01-08 18:29:29

标签: javascript escaping

如何在 JavaScript 中对这样的字符串进行转义

alert(\"Testing\");\nconsole.log(\"Hello\");

因此转义为:

alert("Testing");
console.log("Hello");

我有一个使用 api 并返回转义字符串的程序,但我想用文字表示替换字符串的转义版本,例如"\n" 换行。我看到一个question,它有这个代码来转义一个字符串,但它没有说明如何撤消操作,为了更好地理解字符串是如何转义的,这里是有问题的函数转义一个字符串:

function addslashes(string) {
    return string.replace(/\\/g, '\\\\').
        replace(/\u0008/g, '\\b').
        replace(/\t/g, '\\t').
        replace(/\n/g, '\\n').
        replace(/\f/g, '\\f').
        replace(/\r/g, '\\r').
        replace(/'/g, '\\\'').
        replace(/"/g, '\\"');
}

我非常想撤销那个。提前致谢!

编辑

原来我可以这样做:

var string = "<!DOCTYPE html><script>alert(\"Hello\");<\/html>"
console.log(unescape(escape(string)));
      

1 个答案:

答案 0 :(得分:1)

您可以使用内置的 unescape() 函数

const unescaped = unescape(`alert(\"Testing\");\nconsole.log(\"Hello\");`);
console.log(unescaped)

这是一个替代答案,可以撤消您所做的特定编码

const escapedString = `alert(\"Testing\");\nconsole.log(\"Hello\");`

function removeSlashes(string) {
    return string.replace('\\\\', /\\/g).
        replace('\\b', /\u0008/g).
        replace('\\t', /\t/g).
        replace('\\n', /\n/g).
        replace('\\f', /\f/g).
        replace('\\r', /\r/g).
        replace('\\\'', /'/g).
        replace('\\"', /"/g);
}

console.log(removeSlashes(escapedString));