Как удалить обратную косую черту, выходящую из Javascript VAR? - PullRequest
27 голосов
/ 10 июля 2011

У меня есть эта переменная

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

Что означает

<div class=\"abcdef\">

Но мне нужно

<div class="abcdef">

Как я могу "удалить" эту переменную, чтобы удалить всеэкранирующие символы?

Ответы [ 7 ]

47 голосов
/ 10 июля 2011

Вы можете заменить обратную косую черту, за которой следует кавычка, просто кавычкой через регулярное выражение и функцию String#replace:

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

Обратите внимание, что регулярное выражение ищет только одну обратную косую черту; в литерале их два, потому что вы должны избегать обратной косой черты в литералах регулярного выражения с обратной косой чертой (как в строковом литерале).

g в конце регулярного выражения указывает replace работать по всей строке («global»); в противном случае он заменит только первое совпадение.

2 голосов
/ 18 февраля 2018

Вы можете использовать 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 ;
}
2 голосов
/ 10 июля 2011

Попробуйте это:

x = x.replace(/\\/g, "");
1 голос
/ 10 июля 2011
var x = "<div class=\\\"abcdef\\\">";
alert(x.replace(/\\/gi, ''));
0 голосов
/ 11 сентября 2017
'<div class=\\\"abcdef\\\">'.replace(/\\\"/g, '"')

В других ответах вы удалили все обратные слэши, вы хотите удалить только те, которые находятся перед кавычками.

0 голосов
/ 29 декабря 2013

Вам нужно сделать так, чтобы вместо трех был один обратный слеш.
Например:

var x = "<div class=\"abcdef\">";        
0 голосов
/ 12 февраля 2013

Позвольте мне предложить этот вариант:

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

Эта функция не просто удаляет косые черты.Текст компилируется как код, и в случае правильного ввода вы получите правильный неэкранированный результат для любой escape-последовательности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...