Ciao, prova anche questa, ci ho messo un po' perché mi sono dovuto ripassare le regular expressions:
codice:
<html>
<head>
<script type="text/javascript">
function pulisci_e_spezza() {
array_out = new Array();
re = /[abcdefghijklmnopqrstuvwxyz]/i;
st = document.getElementById('textarea_1').value;
el = "";
k = 0;
for (i=0;i<st.length;i++) {
if (re.exec(st.charAt(i))) {
el = el + st.charAt(i);
}
if ((!re.exec(st.charAt(i))) || (i == st.length - 1)) {
if (el != "") {
array_out[k] = el;
k++;
el = "";
}
}
}
for (n=0;n<array_out.length;n++) {
alert (n + " - " + array_out[n]);
}
};
</script>
</head>
<body>
<form action="#">
<textarea id="textarea_1"></textarea>
<input type="button" value="clicca" onclick="pulisci_e_spezza()" />
</form>
</body>
</html>
In re metti i caratteri che vuoi far passare, la i serve a renderlo case insensitive.
Praticamente si tratta di un ciclo su tutti i caratteri della textarea seguendo questa logica: se il carattere trovato appartiene a quelli permessi viene accodato nella variabile el, se il carattere in esame non appartiene a quelli permessi oppure se la stringa e terminata si carica il prossimo elemento dell'array con la variabile el.
Il ciclo finale visualizza l'array, giusto per verifica, tu puoi sostituirlo col sort che hai detto che sai fare quindi non me ne sono preoccupato.
Ho fatto tutti i test che mi sono venuti in mente ma non escludo che in qualche caso particolare possa non funzionare, al limite riscrivi.
Ciao