JSFiddle - React, Tailwind, and code Playground

HTML

<input type="text" value="1222234" onkeyup="formatNumberInInput(this)"/>

JavaScript

function formatNumberInInput(input) {
    //on sauve la valeur en cours
    var startValue = input.value;

/* on nettoie le nombre qui pour ne garder que 1111.11
    Dans cette fonction on récupère tous les nombres et . ou , via une expression régulière
 */

    var numbers = startValue.match(/([\d.,])/g);
    // On ne fait le traitement que si on a récupéré des nombres, sinon on vide le champ */
    if (numbers) {
        // numbers est un tableau ( ["1", "2", ".", "4", "5"] ) , on concatene l'ensemble pour n'avoir qu'une seule chaine */
        var cleanNumber = numbers.join("");
/*   Ensuite on utilise une expression régulière avancée qui s'occupe de récupérer tous les chiffres qui se trouvent avant un groupe de 3 chiffre répété plusieurs fois
     Et pour chacun de ces chiffres ont rajoute un espace après (le $1 représente le chiffre récupéré) */
        //on supprime au passage les nombres au dela de 2 apres le . ou la virgule
        cleanNumber = cleanNumber.replace(/([.,]\d{2})\d+$/,'$1');
        var formattedNumber = cleanNumber.replace(/(\d)(?=(\d{3})+(?:[.,]\d{2})*$)/g, '$1 ');
        //on reinjecte le nouveau nombre dans le input
        if (startValue != formattedNumber) {
            input.value = formattedNumber;
            
        }
    } else {
        input.value = "";
    }
}