2016-02-29 165 views
0

我需要用''替換'| B'的所有匹配'我嘗試使用'替換',它只替換字符串中的第一個匹配項,並且以下兩個替換原型均未產生所需的結果:Javascript替換子字符串中的所有特殊字符

String.prototype.replaceAll = function(search, replacement) { 
    var target = this; 
    return target.replace(new RegExp(search, 'g'), replacement); 
}; 

String.prototype.replaceAll = function(search, replacement) { 
    var target = this; 
    return target.split(search).join(replacement); 
}; 

任何援助是非常感謝!

+1

你能告訴你的字符串進行測試? – martin

+2

該管道在RegEx中有特殊含義,應該在前面反斜槓'\ | B'上進行轉義。 – Tushar

回答

0

當您從表達式創建RegExp時,您可能需要轉義字符以避免它們被視爲RegExp。在你的情況下,|是正則表達式中的一個特殊字符。

Is there a RegExp.escape function in Javascript?

// Shamelessly copy/pasted from the link above 
RegExp.escape = function(s) { 
    return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); 
}; 

String.prototype.replaceAll = function(search, replacement) { 
    return this.replace(new RegExp(RegExp.escape(search), 'g'), replacement); 
}; 
+0

謝謝!這工作完美! –