要匹配一个正则前面的字符是aaa,后面的字符是bbb的字符串 (但是不要aaa和bbb)

aaaerbbbrwwaaasdsdsbbbsdfsfaaawerwrbbb要获得er,sdsds,werwr
/(?=aaa)\w+?(?=bbb)/g但是得到是aaaer,aaasdsds,aaawerwr开头都多了一个aaa似乎后面的一个(?=)起作用了,但是开头的(?=)并没有起作用这为什么?应该如何写呢

解决方案 »

  1.   

    试试这样s = 'aaaerbbbrwwaaasdsdsbbbsdfsfaaawerwrbbb'
    reg = /aaa(\w*?)(?=bbb)/g
    while(reg.exec(s))
        alert(RegExp.$1);//JS不支持(?<=)
      

  2.   

    C#中可以这么写: (?<=aaa)\w+?(?=bbb)但是JS正则不支持 (?<=)你可以使用分组捕获来实现
      

  3.   

     var regex = /aaa(.+?)bbb/
     var str = "aaaerbbbrwwaaasdsdsbbbsdfsfaaawerwrbbb";
     var array = [];
     var e = regex.exec(str); while(e)
     {
         array.push(e[1]);
         var index = str.indexOf(e[0])+e[0].length;
         str = str.substring(index,str.length);
         e=regex.exec(str);
     }
     alert(array)
    javascript没有逆序环视,只能这样了