Ok, so you'll need a timer, a label to display the error message (for when they use more than one . (period) - then you can get it to strip out all characters except those that are valid.
TextInput.Default:
gblOriginalTextValue
Timer.OnTimerStart:
Set(gblOriginalTextValue, Concat(Split(TextInput1.Text, ""), Value));
Set(
gblOriginalTextValue,
With({SplitList: Split(TextInput1.Text & ".", "")},
Coalesce(
Concat(
ForAll(Sequence(CountRows(SplitList)),
If(
Value = CountRows(SplitList) && Last(FirstN(SplitList, Value)).Value=".", "",
If(IsMatch(Last(FirstN(SplitList, Value)).Value,
"[0-9.]"), Last(FirstN(SplitList, Value)).Value, "")
)
)
,
Value
)
)
)
);
If(CountRows(RemoveIf(Split(gblOriginalTextValue, ""), !IsMatch(Value, "[.]")))>1, Set(ErrorMessageText, "This is not a valid number, please use a period as your decimal separator, only one period is required"), Set(ErrorMessageText, ""))
ErrorMessageLabel.Text:
ErrorMessageText
Here's it in action:

And at the bottom here you'll find a proof of concept app attached 🙂
Cheers,
Sancho