Once you get the column into an array you can use any natural sort method, but you'll need to write a couple extra lines to sort the '*' the way you want.
Here is one sample-
function natSort(as, bs){ var a, b, a1, b1, i= 0, L, rx= /(\d+)|(\D+)/g, rd= /\d/; if(isFinite(as) && isFinite(bs)) return as - bs; a= String(as).toLowerCase(); b= String(bs).toLowerCase(); if(a=== b) return 0; if(!(rd.test(a) && rd.test(b))) return a> b? 1: -1; a=a.replace('*','0'); // or possibly sort any non alpha nums first: b=b.replace('*','0'); // replace(/[^\w\.]/g,'0'); a= a.match(rx); b= b.match(rx); L= a.length> b.length? b.length: a.length; while(i < L){ a1= a[i]; b1= b[i++]; if(a1!== b1){ if(isFinite(a1) && isFinite(b1)){ if(a1.charAt(0)=== "0") a1= "." + a1; if(b1.charAt(0)=== "0") b1= "." + b1; return a1 - b1; } else return a1> b1? 1: -1; } } return a.length - b.length; } var v= "v06.05,ON HOLD,v07.00,INDEPENDENT,v06.07,v06.03,v06.*,v06.05.02,v06.05.01,"+ "v06.00.xx,v06.00,CANCELLED,v06.02,v06.04,v06.00.01,v06.06,v06.01,v06.04.01"; v=v.split(/, */); 'before sort:\n'+v.join(',\n')+'\n\nafter sort:\n'+ v.sort(natSort).join(',\n') /* returned value: before sort: v06.05, ON HOLD, v07.00, INDEPENDENT, v06.07, v06.03, v06.*, v06.05.02, v06.05.01, v06.00.xx, v06.00, CANCELLED, v06.02, v06.04, v06.00.01, v06.06, v06.01, v06.04.01 after sort: CANCELLED, INDEPENDENT, ON HOLD, v06.*, v06.00, v06.00.01, v06.00.xx, v06.01, v06.02, v06.03, v06.04, v06.04.01, v06.05, v06.05.01, v06.05.02, v06.06, v06.07, v07.00 */