需要ie6或firefox或支持javascript5.5的
<script>
var myConst ={
"Red" : 1,
"Blue" : 2,
"Green" : 3,
"Yellow" : 4,
"While" : 5
};str = "color:[Red];background-color:[Yellow];"str2 =str.replace(/\[(.+?)\]/g,function($0,$1){return eval("myConst."+$1);} );alert(str2);
</script>

解决方案 »

  1.   

    谢谢,完全符合要求。
    有一个缺点,本来已经用js5.5了,怎么还用效率低下的古董用法eval呢?
    str2 =str.replace(/\[(.+?)\]/g,function($0,$1){return myConst[$1];} ); 不就行了。有没有更酷的解决办法?明天晚上我就结贴了。
      

  2.   

    ice_berg16(寻梦的稻草人) 的思路是正确的, 在替换函数里套用一个无名函数, 要改进的地方无非就是把正则再优化一下了  .+?这种非贪婪匹配版本要求比较高, 可以改一下, 低版本也就兼容了.str2 = str.replace(/\[([^\]]+)\]/g, function(a, b){return myConst[b];});
      

  3.   

    replace(re, func)同样是js5.5才支持的<script>
    var myConst={
    "Red" : 1,
    "Blue" : 2,
    "Green" : 3,
    "Yellow" : 4,
    "While" : 5
    }str = "color:[Red];background-color:[Yellow];"
    re = /\[([^\]]+)\]/;
    while(re.test(str)) str = str.replace(re,myConst[RegExp.$1])
    alert(str)
    </script>
      

  4.   

    str2 =str.replace(/\[(.+?)\]/g,function(){ return myConst[arguments[1]];} );
    其实都一样,这个已经是最简单的了
      

  5.   


    str2 =str.replace(/\[(.+?)\]/g,function(){return myConst[arguments[1]]];} );其实你动动脑子也就出来了嘛~~!非的要问!
    呵呵~~自己动手丰衣足食。
      

  6.   

    fason的办法不错,在替换中不能使用函数处理子匹配时就可以采用这种办法了