2016-02-29 187 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

谢谢!这工作完美! –