Javascript替换子字符串中的所有特殊字符
问题描述:
我需要用''替换'| 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);
};
任何援助是非常感谢!
答
当您从表达式创建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
谢谢!这工作完美! –
你能告诉你的字符串进行测试? – martin
该管道在RegEx中有特殊含义,应该在前面反斜杠'\ | B'上进行转义。 – Tushar