function replace(text, reg){
reg = new RegExp(text, "ig");
return text.replace(reg, function(word){
return word.toUpCase();
});
}很简单的一个方法,但是有时候调用函数的时候,reg参数有可能包含一些正则的符号 ,例如 reg = "***", reg = "\d",可能会导致输出的结果不正确。所以这里想不使用正则式,用String.replace,可是string.replace只会替换第一个,所以
可能的代码会是:while(text.indexOf(reg) !== -1){
text.replace(reg, function(){ ... });
}请问有更优雅的一点的方案吗?
reg = new RegExp(text, "ig");
return text.replace(reg, function(word){
return word.toUpCase();
});
}很简单的一个方法,但是有时候调用函数的时候,reg参数有可能包含一些正则的符号 ,例如 reg = "***", reg = "\d",可能会导致输出的结果不正确。所以这里想不使用正则式,用String.replace,可是string.replace只会替换第一个,所以
可能的代码会是:while(text.indexOf(reg) !== -1){
text.replace(reg, function(){ ... });
}请问有更优雅的一点的方案吗?
function replace(text, reg){
reg = new RegExp(reg.replace(/[().+*?^$|\\\[\]]/g, "\\$&"), "ig");
return text.replace(reg, function(word){
return word.toUpperCase();
});
}alert(replace("[abc]^^$$", "[abc]"));[ABC]^^$$
_decorateLiteral: function(text, pattern){
while(text.indexOf(pattern) !== -1){
text = text.replace(pattern, function(word){
return "<b>" + word + "</b>";
});
}
return text;
},
很明显这里会导致无限循环,但是在第一个版本(正则式版本),有可能会因为传到了不期待的字符串导致出错。所以请问大家这里应该怎么写?谢谢