[英]String.replace callback not working
我正在嘗試創建一個將bbcode轉換為html的類,但是replace不調用回調函數。
這就是我所擁有的
function bbcode(){
this.bbcode_table = {};
this.bbcode_table[/[asdf]/g] = function(match, contents, offset, input_string){
return "hi";
}
}
bbcode.prototype.toHTML = function(str){
for (var key in this.bbcode_table){
str = str.replace(key, this.bbcode_table[key]);
}
console.log(str); // asdf
}
var a = new bbcode;
a.toHTML("asdf");
上面的代碼不起作用,但是,下面的代碼運行良好。
text = "asdf";
text = text.replace(/[asdf]/g, function(match, contents, offset, input_string){
return "hi";
});
console.log(text); // hihihihi
我究竟做錯了什么?
由於key
已轉換為string
,因此功能replace
不會捕獲與"/[asdf]/g"
任何匹配項。
您可以對對象RegExp
遵循這種方法
function bbcode() { this.bbcode_table = {}; this.bbcode_table["[asdf]"] = { "cb": function(match, contents, offset, input_string) { return "hi"; }, "flag": "g" } } bbcode.prototype.toHTML = function(str) { for (var key in this.bbcode_table) { var regex = new RegExp(key, this.bbcode_table[key].flag); str = str.replace(regex, this.bbcode_table[key].cb); } console.log(str); } var a = new bbcode; a.toHTML("asdf");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.