var hashJson = {"[a]":"abss","[b]":"ffe","[c]":"assxx","[d]":"hhhss"};
var testStr ="[a]dbciidlsoog[b]dddd[d]";
var front="<input value=\"";
var back="\"/>";
上面3个变量
我要把 testStr的串取出来将对应hashJson的Key换成加标示Value。
例如: 将testStr的值替换成 "<input value=\"abss\"/>dbciidlsoog<input value=\"ffe\"/>dddd<input value=\"hhhss\"/>";
比较麻烦,看看有没有大牛了
var testStr ="[a]dbciidlsoog[b]dddd[d]";
var front="<input value=\"";
var back="\"/>";
testStr=testStr.replace(/(\[[a-z]+\])/ig,function($1) {return front+hashJson[$1]+back; })alert(testStr)
var testStr ="[aa] x [b] y [d] z";
var re=/([\[](\S+)[]])/g;
testStr=testStr.replace(re,function(a){return hashJson[a]});
alert(testStr);
++。又学到一招。
以前不知道replace后面的替换字符串还可以用这种方式去处理。一开始搞半天搞不了。跑来刷新一看。两眼放光呀我。
本来想不发的,不过,看了下,和showbo在匹配方式上有一点点区别。又顺便一下,就发了楼主眼大眼睛看清楚哈,我这是盗版的
var testStr ="[aa] x [b] y [d] z";
var re=/([\[](\S+)[]])/g;
testStr=testStr.replace(re,function(a){return hashJson[a]});
alert(testStr);
var hashJson = {"[a]":"abss","[b]":"ffe","[c]":"assxx","[d]":"hhhss"};
var testStr ="[a]dbciidlsoog[b]dddd[d]";
var front="<input value=\"";
var back="\"/>";
var re = /\[\w+\]/gi;
testStr = testStr.replace(re, function($){
return front+'\\'+hashJson[$]+'\\'+back;
});
alert(testStr);
我是不是把这个的正则改成/(\[*+\])/ig 是不是就完成我想要的了,但这个*就是全部字符了,会不会影响性能。能贴个多个字母和多个中文的正则匹配吗?LZ实在懒得找了。。
var testStr ="[a]dbciidlsoog[b]dddd[d]";
var front="<input value=\""; var back="\"/>";
testStr=testStr.replace(/\[[^\]]+\]/g,function($0) {return front+hashJson[$0]+back; })
alert(testStr)