JSFiddle - React, Tailwind, and code Playground

HTML

Standard test case.
<xmp id="a"></xmp>
<p/>
Test case with leading zeros.
<xmp id="b"></xmp>

CSS

xmp {background-color: #eee}

JavaScript

function alphanum(a, b) {
    
    function isdigit(ch) {
        return '0' <= ch && ch <= '9';
    }
    
    var min = Math.min(a.length, b.length);
    
    for (var i = 0; i < min; i++) {
        if (a.charCodeAt(i) !== b.charCodeAt(i)) break;
    }
    
    if (i == min) return a.length - b.length;
    
    if (isdigit(a[i])) {
        if (isdigit(b[i])) {
            if (a[i] === '0' || b[i] === '0') {
                for (var z = i - 1; z > 0; z--) {
                    if (a[z] !== '0') break;
                }
                if (!isdigit(a[z])) z++;
                if (a[z] === '0' || b[z] === '0') {
                    for (var j = i; ; j++) {
                        if (b[j] !== '0') break;
                    }
                    for (;; i++) {
                        if (a[i] !== '0') break;
                    }
                    if (!isdigit(a[i])) {
                        if (isdigit(b[j])) {
                            return -1;
                        } else {
                            return i - j;
                        }
                    } else if (!isdigit(b[j])) {
                        return 1;
                    } else {
                        var cmp = a.charCodeAt(i) - b.charCodeAt(j);
                        for (i++, j++;; i++, j++) {
                            if (!isdigit(a[i])) {
                                if (isdigit(b[j])) {
                                    return -1;
                                } else {
                                    if (cmp) return cmp;
                                    return i - j;
                                }
                            } else if (!isdigit(b[j])) {
                                return 1;
                            }
                        }
                    }
                }
            }
            
            var cmp = a.charCodeAt(i) - b.charCodeAt(i);
            for (i++;; i++) {
                if (!isdigit(a[i])) {
                 ...