如何在javascript中为任何字符动态添加转义字符?

时间:2017-01-03 16:33:01

标签: javascript regex escaping

我的 p 元素包含一些文字。在HTML代码的本文中,我使用了一些" escape"字符如 \ n \? \ t 等。当我在JS代码中获取字符串时,它被视为 \\ n \\? \\ t 。我想将其替换为 REAL 转义字符,如下面的代码段所示。

我想将字符串中的所有" \\ char" 更改为输出转义" \ char"

当我单独替换所有字符时(如下所示),它会起作用,但我想知道如何对我文本中以\开头的所有字符一次

我需要这样的东西:

.replace(/\\/,'\')

或类似的东西:

.replace(/\\(.)/,'\$1')

但它不起作用,因为斜杠 \ 会在代码中使用以下符号' $ 进行转义。有没有办法插入转义字符而不是使用 \



var input = document.getElementById('sampInput');
var output = document.getElementById('sampOutput');

var parsedInput = input.innerHTML
                   .replace(/\\n/g,'\n')
                   .replace(/\\t/g,'\t')
                   .replace(/\\\*/g,'*')
                   .replace(/\\\?/g,'?');

output.innerHTML = parsedInput;

p {
  white-space:pre;
}

<h4>Input:</h4>
<p id="sampInput">hello\nworld\nhello\tworld\nsome \? character and another \* character</p>

<h4>Output:</h4>
<p id="sampOutput"></p>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

没有直接的方法来做你要求的事情,但你可以写一些代码来做:

var charmap = {
  n: "\n",
  r: "\r",
  f: "\f",
  t: "\t",
  b: "\b"
};
var replaced = string.replace(/\\(.)/g, function(_, char) {
  return (char in charmap) ? charmap[char] : char;
});

如果你想要另外解析\uNNNN转义,那就更复杂了。

相关问题