1) Перед проверкой паттерна тоже удалите из него пробел, будет давать ввести больше 4 цифр
if (!(value..replace(/\s/g, '').match(pattern))
onkeyup перепишите в виде
document.getElementById('input').onkeyup = function() {
val_input = document.getElementById('input').value;
val_input = val_input.replace(/\s/g, '');
if (!val_input) return;
var hasDotAtTheEnd = val_input.endsWith('.');
val_input = Number.parseFloat(val_input)
if (isNaN(val_input)) return
document.getElementById('input').value = val_input.toLocaleString('ru').replace(',', '.') + (hasDotAtTheEnd ? '.' : '');
}