Alphanumeric/numeric mixed sort
by DineshAngappa
JavaScript
var reA = /[^a-zA-Z]/g;
var reN = /[^0-9]/g;
function sortAlphaNum(a,b) {
var AInt = parseInt(a, 10);
var BInt = parseInt(b, 10);
if(isNaN(AInt) && isNaN(BInt)){
var aA = a.replace(reA, "");
var bA = b.replace(reA, "");
if(aA === bA) {
var aN = parseInt(a.replace(reN, ""), 10);
var bN = parseInt(b.replace(reN, ""), 10);
return aN === bN ? 0 : aN > bN ? 1 : -1;
} else {
return aA > bA ? 1 : -1;
}
}else if(isNaN(AInt)){
return 1;
}else if(isNaN(BInt)){
return -1;
}else{
return AInt > BInt ? 1 : -1;
}
}
var newlist = ["COM11","COM5","COM1", "10.179.2.25", "A10", "A11", "A12", "10.179.3.25", 3, 10, 2, "A2", "A3", "A4", "B10", "B2", "F1", "F12", "F3"].sort(sortAlphaNum);
console.log(newlist);