var faceArr = "狂笑,大笑,惊讶,害羞,窃笑,发怒,大哭,色色,坏笑";
function JS_cruel_search(data, key) {
        key = key.replace("[", "").replace("]", "");
        var t = ("," + data.toString() + ",").split("," + key + ",");
        if (t.length && (x = t[0].split(",").length - 1) < data.length)
            return x;
    }
    var str = "极老规矩埰彬极极[狂笑]极[大笑]极[害羞]asdfasdf有极老规矩埰彬极极";
    var reg = /\[(.+?)\]/ig;
    var sp = faceArr.split(",");
    var result = str.replace(reg, "<img src=images/face/" + JS_cruel_search(sp, "$1") + ".gif align=absmiddle>");
    document.write(result);
为什么会无法查找到并替换呢?JS_cruel_search方法是正确的。如果我把JS_cruel_search(sp, "$1") 中的"$1"改成"[狂笑]"则可以。请教这是为什么?

解决方案 »

  1.   

    "$1"你这个是什么参数啊能传到JS_cruel_search方法里吗?!
      

  2.   

    为什么不能查找从正则中提取出来的文字坐标呢?
    JS_cruel_search返回的值都是undefined
      

  3.   


    function JS_cruel_search(data, key) {
            key = key.replace("[", "").replace("]", "");
    return key;==============
    这样是查看图片的源路径,显示已经替换成相应的文字了
    如果你有条件的话,能否复制到一个html里面运行看看?谢谢了
      

  4.   

    var result = str.replace(reg, "<img src=images/face/" + JS_cruel_search(sp, "$1") + ".gif align=absmiddle>");=>var result = str.replace(reg, function(m,m1) {
    return "<img src=images/face/" + JS_cruel_search(sp, m1) + ".gif align=absmiddle>";
    });
      

  5.   

    var faceArr = "狂笑,大笑,惊讶,害羞,窃笑,发怒,大哭,色色,坏笑";
    function JS_cruel_search(data, key) {
            key = key.replace("[", "").replace("]", "");
            var t = ("," + data.toString() + ",").split("," + key + ",");
            if (t.length && (x = t[0].split(",").length - 1) < data.length)
                return x;
        }

        var str = "极老规矩埰彬极极[狂笑]极[大笑]极[害羞]asdfasdf有极老规矩埰彬极极";
        //var reg = /(\[[^\[]+\])/ig;
        var reg = new RegExp("(\\[[^\\[]+\\])","g");
        var tmp = str.match(reg);
        
        for(var i in tmp){
         str = str.replace(tmp[i],JS_cruel_search(faceArr.split(","), tmp[i]));
        }
        document.write(str+"<br/>");