2011-07-10 144 views

Respuesta

37

Usted puede sustituir a una barra invertida seguida por una cita con sólo una cita a través de una expresión regular y la función String#replace:

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

Tenga en cuenta que la expresión regular sólo se ve por una barra invertida; hay dos en el literal porque tiene que escapar barras diagonales inversas en literales de expresiones regulares con una barra invertida (como en un literal de cadena).

El g al final de la expresión regular dice replace a trabajar a lo largo de la cadena ("global"); de lo contrario, reemplazaría solo la primera coincidencia.

4

Prueba esto:

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

Esto eliminará todas las barras invertidas, la pregunta es cómo quitar la barra invertida ** ** escapar. – vinsa

+4

12 upvotes para, literalmente, la respuesta incorrecta. –

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

El modificador 'i' no es necesario aquí. –

+0

Tampoco es la alerta o la definición de x –

+0

Engineer Dollery, lol duhhh! – HelpNeeder

-4

Permítanme proponer esta variante:

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

Esta función no basta con quitar barras. El texto se compila como código, y en caso de que la entrada sea correcta, se obtiene el resultado de escamado correcto para cualquier secuencia de escape.

+3

Usar eval es una mala práctica; a menos que haya desinfectado cuidadosamente los datos, esto podría permitir la ejecución de código malicioso. – Zev

+0

pero la forma de unescape \ 056 \ 045 como cadena – eri

-3

Debe hacer que haya una barra invertida en lugar de tres.
De esta manera:

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

Otras respuestas tienen que eliminar todas las barras invertidas, sólo desea eliminar los befoew las comillas.

0

Puede utilizar JSON.parse a unescape barras diagonales:

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 ; 
} 
Cuestiones relacionadas