要实现的是查找出符号“]”在字符串中的位置,但如果“]”前面是“\”符号的话,就不匹配
var str = "\\\\]  ] df";
var index = str.search(/([^\\]\])/) + 1;
alert(str.substring(0, index));
如上面代码,期望的结果是“\\]  ]”
但上面代码的结果是“\\]”

解决方案 »

  1.   

    没错,只是alert里你看不出空格
    var str = "\\\\]abcd] df";
    var index = str.search(/([^\\]\])/) + 1;
    alert(str.substring(0, index));
      

  2.   

    还有就是,用str.substring(0, index+1)可以包括了后面的]
    substring的第二个参数是length,你传的是索引
      

  3.   

    我刚自己测试了几次也发现是这样
    var index = str.search(/[^\\]\]/) + 2;
    alert(str.substring(0, index));
    如果是这样的话,那就可以得到期望结果(正则表达式匹配的是2个字符,任意非\加上]的字符,所以索引应该是加2)
    但是...那是在测试字符串是这样的形式
    "\\\\]  df] ksjdf]"
    下才有用
    如果测试字符串是
    "\\\\]   ksdfj"
    的话,就出问题了...
      

  4.   

    错了...上面说索引应该加2,应该是length应该加2,substring不会包含length
      

  5.   

    没问题啊,正则search返回的是index,要判断下是不是-1,-1表示不存在,则另外处理。