нужно
несоответствие, то есть исключить из патерна другой патерн

Код:
var s = '<xx> <w>w>';
//var re = /(<!(<|>)*>)/g; // так не работает
var re = /(<(?:.(?!<|>))*>)/g; // и так не работает
alert( s.replace(re, "-$1-"));
надо поймать <xx> и <w>
Добавлено через 47 минут
заработало! по аналогии php отключил жадность и уваля.
Странно, что ни в одном справочники 'JS: регулярные выражения' даже упомянания нет про "жадность".