Можно и регулярными выражениями, но насколько это будет производительно - надо проверять.
// произведет замену только для "целых" abc, def
var s = 'abcdef www def xyz abc klm';
var t = s.replace(/(?:\b(abc|def)\b)|(.+?)/ig, function($0, $1, $2)
{
return $1 ? $1.toUpperCase() : $2.toLowerCase();
});
alert([s, t].join('\n'));