+ -
当前位置:首页 → 问答吧 → 这段表情正则替换的代码哪里出错了。请教。

这段表情正则替换的代码哪里出错了。请教。

时间:2011-12-06

来源:互联网

JScript code

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"改成"[狂笑]"则可以。请教这是为什么?

作者: Netcean   发布时间: 2011-12-06

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

作者: zsx841021   发布时间: 2011-12-06

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

作者: Netcean   发布时间: 2011-12-06

引用 1 楼 zsx841021 的回复:
"$1"你这个是什么参数啊。。。能传到JS_cruel_search方法里吗?!


function JS_cruel_search(data, key) {
  key = key.replace("[", "").replace("]", "");
return key;

==============
这样是查看图片的源路径,显示已经替换成相应的文字了
如果你有条件的话,能否复制到一个html里面运行看看?谢谢了

作者: Netcean   发布时间: 2011-12-06

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

作者: cj205   发布时间: 2011-12-06

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

作者: babyboy9685   发布时间: 2011-12-06