Похоже, вы хотите сохранить только первую точку и все символы, кроме этой первой точки и цифр.
Вы можете использовать
const filterValue = (value) => value.replace(/^([^.]*\.)|\.+/g, '$1').replace(/[^\d.]+/g, '')
Подробности
.replace(/^([^.]*\.)|\.+/g, '$1')
- захватывает подстроку от начала строки до первого .
в группу 1, чтобы позже восстановить эту часть с обратной ссылкой $1
в шаблоне замены и удалить все 1+ точек где-либо еще .replace(/[^\d.]+/g, '')
- удаляет одно или несколько вхождений любого символа, кроме di git и .
JS демо:
const filterValue = (value) => value.replace(/^([^.]*\.)|\.+/g, '$1').replace(/[^\d.]+/g, '')
console.log(filterValue('test1234test'));
console.log(filterValue('test1.2.3.4test'));
console.log(filterValue('te.st1.2.3.4test'));