小小分析:
1. ? 应该是用在character literal, or character class之后, 用在最前面, 不明确
2.后面两个good, 前面没有"=",  所以=似乎没有必要可以尝试用如下代码获取两个good, 看看似乎是满足你的需求.  var s=" <td good>good </td> <td>good morning </td>" 
var reg = /(>+)((good)+)/g;  
var r=s.match(reg); 
alert(r.join("]----[").toString()); 
alert(RegExp.$1);
alert(RegExp.$2);
alert(RegExp.$3);

解决方案 »

  1.   

    (?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如, 'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。 
     我是参照这个window脚本技术指南写的。其实下面的代码就可以得到后面的两个也可以得到后面两个good, 只是为什么不能用像上面那样用正向预查呢?//WScript Jscript 
    var s=" <td good>good </td> <td>good morning </td>" 
    var r=s.match(/(>)good/g); 
    WScript.Echo(r[0].slice(1)); 
    WScript.Echo(r[1].slice(1));
      

  2.   

    //WScript Jscript 
    var s=" <td good>good </td> <td>good morning </td>" 
    var r=s.match(/good(?=[^>])/g); 
    WScript.Echo(r); 正向预查用在后面可以,为什么不能用在前面呢?参考里面没说啊