javascript replaceAll js替換重複處理
1 普通的全局替換處理
String.prototype.replaceAll = function (s1, s2) {
return this.replace(s1, "gm"), s2);
}
var str1 = "adfk[保佑][保佑]";
var str2 = str1.replaceAll("[保佑]", "smile");
str2 : adfk[smilesmile][smilesmile]
結果與預期不一緻,分析原因可能是特殊字元的問題
運作下面的
var str3 = str1.replaceAll("[", "smile");
則會報錯:
Uncaught SyntaxError: Invalid regular expression: /[/: Unterminated character class
修改成如下方式2:
2 正确的全局替換處理
RegExp.quote = function (str) {
return str.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1");
};
String.prototype.replaceAll = function (s1, s2) {
return this.replace(new RegExp(RegExp.quote(s1), "gm"), s2);
}
var str1 = "adfk[保佑][保佑]";
var str2 = str1.replaceAll("[保佑]", "smile");
str2 : adfksmilesmile
結果正确;
結論:js的replaceAll
如果要處理的字元串中有正規表達式的特殊字元,則要用第二種方式才能正确處理。是以推薦用第二種方式