JSFiddle - React, Tailwind, and code Playground
JavaScript
var data = ["a1b3","a10b11","b10b2","a9b2","a1b20","a1c4"];
function compareLists(a,b){
var alist = a.split(/(\d+)/),
blist = b.split(/(\d+)/);
alist.slice(-1) == '' ? alist.pop() : null;
blist.slice(-1) == '' ? blist.pop() : null;
for (var i = 0, len = alist.length; i < len;i++){
if (alist[i] != blist[i]){
if (alist[i].match(/\d/))
{
return +alist[i] - +blist[i];
} else {
return alist[i].localeCompare(blist[i]);
}
}
}
return true;
}
data.sort( compareLists );
alert(data);