如何从javascript var中删除反斜杠转义?

时间:2011-07-10 09:50:08

标签: javascript escaping

我有这个var

var x = "<div class=\\\"abcdef\\\">";

哪个是

<div class=\"abcdef\">

但我需要

<div class="abcdef">

如何“取消”此var以删除所有转义字符?

8 个答案:

答案 0 :(得分:45)

您可以通过正则表达式和String#replace函数替换反斜杠后跟报价的引号:

var x = "<div class=\\\"abcdef\\\">";
x = x.replace(/\\"/g, '"');
document.body.appendChild(
  document.createTextNode("After: " + x)
);

请注意,正则表达式只查找一个反斜杠;文字中有两个,因为你必须使用反斜杠在正则表达式文字中转义反斜杠(就像在字符串文字中一样)。

正则表达式末尾的g告诉replace在整个字符串中工作(“全局”);否则,它只会取代第一场比赛。

答案 1 :(得分:2)

试试这个:

x = x.replace(/\\/g, "");

答案 2 :(得分:1)

var x = "<div class=\\\"abcdef\\\">";
alert(x.replace(/\\/gi, ''));

答案 3 :(得分:1)

您可以使用JSON.parse来减少斜线:

function unescapeSlashes(str) {
  // add another escaped slash if the string ends with an odd
  // number of escaped slashes which will crash JSON.parse
  let parsedStr = str.replace(/(^|[^\\])(\\\\)*\\$/, "$&\\");

  try {
    parsedStr = JSON.parse(`"${parsedStr}"`);
  } catch(e) {
    return str;
  }
  return parsedStr ;
}

答案 4 :(得分:0)

'<div class=\\\"abcdef\\\">'.replace(/\\\"/g, '"')

其他答案你删除所有反斜杠,你只想删除那些引号。

答案 5 :(得分:0)

如果要删除反斜杠转义符,但要保留转义的反斜杠,则可以执行以下操作:

"a\\b\\\\c\\\\\\\\\\d".replace(/(?:\\(.))/g, '$1');

结果: ab\c\\d

replace(/(?:\\(.))/g, '$1')的解释:

/(?:\\)是一个非捕获组,用于捕获前导反斜杠

/(.)是一个捕获组,用于捕获反斜杠之后的内容

/g全局匹配:查找所有匹配,而不仅仅是第一个。

$1引用了第一个捕获组的内容(反斜杠后面是什么)。

答案 6 :(得分:-3)

你需要有一个反斜杠而不是三个。
像这样:

var x = "<div class=\"abcdef\">";        

答案 7 :(得分:-4)

让我提出这个变种:

function un(v) { eval('v = "'+v+'"'); return v; }

此功能不会简单地删除斜杠。文本编译为代码,如果输入正确,您可以获得任何转义序列的非转义结果。