Credit Card input formatting

HTML

<input type="text" class="credit-card" placeholder="XXXX-XXXX-XXXX-XXXX" />

JavaScript

String.prototype.toCardFormat = function () {
    return this.replace(/[^0-9]/g, "").substr(0, 16).split("").reduce(cardFormat, "");
    function cardFormat(str, l, i) {
        return str + ((!i || (i % 4)) ? "" : " ") + l;
    }
};
    
$(document).ready(function(){
    $(".credit-card").keyup(function () {
        $(this).val($(this).val().toCardFormat());
    });
});