JSFiddle - React, Tailwind, and code Playground

by David Thomas

HTML

<table>
    <tr>
        <td class="ordinal">No numbers here</td>
        <td class="ordinal">11-11232235313</td>
        <td class="ordinal">12</td>
        <td>Not a number at all</td>
        <td class="ordinal">Some text with a number, in this case: 13</td>
        <td class="ordinal">The 6 cell</td>
    </tr>
</table>

JavaScript

Number.prototype.ordinate = function(){
    var num = this,
        numStr = num.toString(),
        last = numStr.slice(-1),
        len = numStr.length,
        ord = '';
    switch (last) {
        case '1':
            ord = numStr.slice(-2) === '11' ? 'th' : 'st';
            break;
        case '2':
            ord = numStr.slice(-2) === '12' ? 'th' : 'nd';
            break;
        case '3':
            ord = numStr.slice(-2) === '13' ? 'th' : 'rd';
            break;
        default:
            ord = 'th';
            break;
    }
    return num.toString() + ord;
};

$(".ordinal").text(function (i,t) {
    return t.replace(/\b(\d+)\b/g, function(a){
        return parseInt(a, 10).ordinate();
    });
});