2014-03-27 72 views
1

在我的代碼如下,除了$('#output').html(value.replace(/[\(\)\{\}\[\]\.\,\;\:\"\']/g, '')) 不會替代這些符號,我不完全確定爲什麼。我做了一些研究,並嘗試將兩個替代品連接在一起,但這也不起作用。正則表達式不替代值

function checkValue() { 
var value = document.getElementById("thisinput").value; 
var unspeakables = ['shout', 'message'], 
    formatting = { 
     'shout' : { 
      'color' : 'red' 
     }, 
    }; 
$('#output').html(value.replace(/[\(\)\{\}\[\]\.\,\;\:\"\']/g, '')), 
$('#output').html(value.replace(new RegExp('\\b' + unspeakables.join('\\b|\\b') + '\\b','gi'), 
function(matchedWord) { 
    $('#output').css(formatting[matchedWord.toLowerCase()] || {}); 
    return ''; 
})); 

我希望有人能幫助我!

謝謝你一堆。

回答

1

你叫

$('#output').html(

兩次。第二次,它取代了第一次設置的內容。

而不是

$('#output').html(value.replace(/[\(\)\{\}\[\]\.\,\;\:\"\']/g, '')), 
$('#output').html(value.replace(new RegExp('\\b' + unspeakables.join('\\b|\\b') 
... 

你可能想

value = value.replace(/[\(\)\{\}\[\]\.\,\;\:\"\']/g, '') 
.replace(new RegExp('\\b' + unspeakables.join('\\b|\\b') + '\\b','gi'), 
    function(matchedWord) { 
     $('#output').css(formatting[matchedWord.toLowerCase()] || {}); 
     return ''; 
    } 
); 
$('#output').html(value); 

也許你用什麼呢

value.replace(someRegex,someReplacement); 

困惑不改變value,作爲一個字符串在JavaScript中是不可變的。這返回一個新的字符串。

+0

非常有幫助,工作很好。感謝您的解釋! (等待接受答案)。 – WalkOfLife