2011-08-05 202 views
0

正則表達式: var s = document.getElementById(「username」).value;如果s ==「\ \ \ \」; var result = s.replace(/ \/g,「」)會出錯嗎?爲什麼那個螢火蟲錯誤?JavaScript替換字符串

希望結果等於== 「」,但螢火蟲是輸出:

的SyntaxError {源= 「與(_FirebugCommandLine){(」 \ \「)代替(/(\)/克。 「」); \ n};「,message =」未終止的字符串文字「,fileName =」resource://firebug_rjs/console/commandLineExposed.js「,更多......}

爲什麼?請幫幫我?

回答

2

\ \是一個特殊字符。 See Special Characters in Javascript

你必須逃脫\

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

應該工作。

順便說一句,你想在你的regEx比賽中做什麼?

+2

@kevin彭,你想達到什麼目的? – Nivas

0

你需要轉義反斜線:

t = ("\\\\").replace(/(\\)/g,""); 
0

因爲你沒有逃過字符串中的反斜槓。

之前結束的報價意味着該報價是字符串的一部分,而不是,所以串並沒有結束,直到下一次報價,讓您的代碼包含反斜槓:

  • (
  • 字符串與內容").replace(/(\\)/g,
  • 與內容);是缺少結束引號

逃離巴串ckslashes他們加倍:

("\\ \\").replace(/(\\)/g,""); 
0

\符號是正則表達式...

\n = newline; 
\t = tabspace; 
\\ = "\" symbol; 

所以,如果你寫//它會標記爲已評論.... 如果你寫\/ = "/"字符串。 。 但現在你寫「...替換(/ \/gi)」 ... \/=/將標記爲字符串,所以下一個字不能關閉..你必須

var s = document.getElementById("username").value; 
if(s.search("\ \ \ \")>=0){ 
    s.replace(/\\/g,""); 
} 

\\意思\ ...