2012-04-21 246 views
1

嘿傢伙今晚只是一個快速的。javascript字符串替換

我只是想換一個笑臉如:-P到HTML代碼像<span class=surp></span> 但它與一個錯誤,是
Uncaught SyntaxError: Invalid regular expression: /:-(/: Unterminated group


這是我的代碼

一部分出來
newmessage = newmessage.replace(/:-(/gi, "<span class=sad></span>"); 

我想通了,它不喜歡支架,所以有沒有其他的方式來與支架做到這一點?

回答

3

在正則表達式,(開始一個組 - 但在你的情況要匹配字面(,所以你需要用反斜線escapg它:

newmessage = newmessage.replace(/:-\(/gi, "<span class=sad></span>"); 

除此之外,我會做的-可選 - 大多數人使用:(代替:-(

newmessage = newmessage.replace(/:-?\(/gi, "<span class=sad></span>"); 
+0

感謝兄弟幫了不少忙 – ryanc1256 2012-04-21 12:22:38

+0

生病標記你的答案時,它會讓我 – ryanc1256 2012-04-21 12:23:39

0

正如@ThiefMaster正確地指出,你需要逃脫支架在正則表達式字面上使用它,用轉義字符\

但你想做的事,我想你會是最好的傳遞函數作爲第二個參數,這樣你就可以在一個單一的.replace()電話與一個單一的正則表達式要更換所有表情符號匹配取代一切。

事情是這樣的:

newmessage = newmessage.replace(/(:-\(|:\(|:-\)|:\)|:-P|:P)/gi, function(match) { 
    switch (match.toUpperCase()) { 
    case ':-)': 
    case ':)': 
     return '<span class="happy"></span>'; 
    case ':-(': 
    case ':(': 
     return '<span class="sad"></span>'; 
    case ':-P': 
    case ':P': 
     return '<span class="surp"></span>'; 
    default: 
     return match; 
    } 
});