2011-07-10 37 views

回答

37

可以更換一個反斜槓通過正則表達式,然後用剛報價報價和String#replace功能:

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

注意,正則表達式只是尋找一個反斜槓;在文字中有兩個,因爲你必須在正則表達式文字中用反斜槓(就像在字符串文字中)反斜槓。

在正則表達式結尾的g告訴replace在整個字符串(「global」)中工作;否則,它只會取代第一場比賽。

4

試試這個:

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

這將刪除所有的反斜線,問題是如何刪除反斜槓逃逸** **。 – vinsa

+4

12 upvotes從字面上錯誤的答案。 –

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

'i'修飾符在這裏不需要。 –

+0

工程師Dollery,lol duhhh沒有提醒或者已被定義x –

+0

! – HelpNeeder

-4

讓我提出這個變體:

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

此功能不會簡單地刪除斜槓。文本編譯爲代碼,並在正確輸入的情況下,您可以正確地取消任何轉義序列的結果。

+3

使用eval是一個不好的做法;除非您仔細清理了可能允許惡意代碼執行的數據。 – Zev

+0

但是像unescape \ 056 \ 045這樣的字符串 – eri

-3

你需要使一個反斜槓而不是三個。
像這樣:

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

其他的答案中有你刪除所有的反斜線,你只是想刪除的那些befoew引號。

0

您可以使用JSON.parse到UNESCAPE斜線:

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