var all = "draggable resizable abc table shadow";
var some = all.replace(/(?:^|\s)(resizable|draggable|table)(?=\s|$)/g, '');
console.log(some);
// " abc shadow"
console.log(some.replace(/^\s+|\s+$/g,''));
// "abc shadow"
console.log(some.split(/\s+/));
// ["", "abc", "shadow"]
Si noti che non è necessario il secondo replace
(non c'è bisogno di spogliarsi spazi iniziali e finali), se invece si è una stringa che è appropriato per l'impostazione della className
a.
Ma allora, se si sta cercando di rimuovere solo un insieme di classi note da un elemento, molto meglio semplicemente:
$(...).removeClass("draggable resizable table");
alternativa (senza bisogno di una regex):
var ignore = {resizable:1, draggable:1, table:1};
var all = "draggable resizable abc table shadow".split(' ');
for (var subset=[],i=all.length;i--;) if (!ignore[all[i]]) subset.push(all[i]);
console.log(subset);
// ["shadow","abc"]
console.log(subset.join(' '));
// "shadow abc"
Così si desidera che i nomi di classe reali, non gli elementi HTML? –
Suggerimento: otterrete risposte migliori se spiegherete cosa intendete fare al posto di (o in aggiunta a) chiedendo un modo in cui pensate di poterlo realizzare. Perché vuoi una lista di classi meno le altre? (Che cosa hai intenzione di fare con loro.) – Phrogz