割と時間かかったので載せます。何かの参考になれば幸いです。
少数以外で最初入った"0"も消せます。
コード
以下のメソッドで変換した値を、お好みの方法でinputのvalueにセットしてください。
※最初の"."が放置されていたので修正しました
const validateInputFloat = (value: string): string =>
value.split(".").length < 3 && /^(\d+\.?\d*|\.\d+)$/.test(value)
? value
.replace(/^0+(?=\d)/, "")
.replace(/^\./, "0.")
.replace(/\.$/, ".0")
: "0";
Comments
.1 → 0.1 にならない
0.0000 → 0 にならない
8.90 → 8.9 にならない
12.34.56 → 0 にならない
.... → ....0 になる
この辺は仕様でしょうか?
最後に0が残っていても数値として計算できるので、後ろの0は残しておいています。
"."が複数あったり、最初にあったりしても検出していないのは、考慮漏れだったのでコード修正しました。
コメントありがとうございます。
この条件式は
!isNaN(value)
でいいのでは?Let's comment your feelings that are more than good