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\"/>";
比较麻烦,看看有没有大牛了

解决方案 »

  1.   

    简单一点吧。。把testStr串中包含的key直接替换成对应hashJson key的value吧。
      

  2.   

    var hashJson = {"[a]":"abss","[b]":"ffe","[c]":"assxx","[d]":"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)
      

  3.   

    var hashJson = {"[aa]":"1","[b]":"2","[c]":"3","[d]":"4"};
    var testStr ="[aa] x [b] y [d] z";
    var re=/([\[](\S+)[]])/g;
    testStr=testStr.replace(re,function(a){return hashJson[a]});
    alert(testStr);
      

  4.   


    ++。又学到一招。
    以前不知道replace后面的替换字符串还可以用这种方式去处理。一开始搞半天搞不了。跑来刷新一看。两眼放光呀我。
    本来想不发的,不过,看了下,和showbo在匹配方式上有一点点区别。又顺便一下,就发了楼主眼大眼睛看清楚哈,我这是盗版的
      

  5.   

    var hashJson = {"[aa]":"1","[b]":"2","[c]":"3","[d]":"4"};
    var testStr ="[aa] x [b] y [d] z";
    var re=/([\[](\S+)[]])/g;
    testStr=testStr.replace(re,function(a){return hashJson[a]});
    alert(testStr);
      

  6.   


    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);
      

  7.   

    可能我写的demo不够严谨,hashJson中的key 有可能是中文 + 字母。
    我是不是把这个的正则改成/(\[*+\])/ig 是不是就完成我想要的了,但这个*就是全部字符了,会不会影响性能。能贴个多个字母和多个中文的正则匹配吗?LZ实在懒得找了。。
      

  8.   

    var hashJson = {"[a]":"abss","[b]":"ffe","[c]":"assxx","[d]":"hhhss"}; 
    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)
      

  9.   

    我改成了这样,谢谢大牛启发。如果我写的正则有问题,尽快告诉我。var reg=/(\[[\w\u4e00-\u9fa5]+\])/ig;