天天看點

javascript replaceAll js替換重複處理

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

如果要處理的字元串中有正規表達式的特殊字元,則要用第二種方式才能正确處理。是以推薦用第二種方式

繼續閱讀