肯定先読みと?:

肯定先読み(?=)をなんとなく理解してたが
?:←これがWSHのヘルプに載っており
それ見たら以前より、なんとなく理解できた。

var str = 'Windows95 Windows98 Windows2000 WindowsXP';


alert(str.replace(/Windows(?=95|98|2000)/g, '@'));
//@95 @98 @2000 WindowsXP

alert(str.replace(/Windows(?:95|98|2000)/g, '@'));
//@ @ @ WindowsXP

alert(str.replace(/Windows(?!95|98|2000)/g, '@'));
//Windows95 Windows98 Windows2000 @XP

つまりこういうことです。
説明はできませんしません。