Удаление точки с конца строки при помощи регулярного выражения

У меня есть код, который разрешает пользователю ввод в поле input только числа, включая вещественные:

value.replace(/^\D/, "").replace(/[^.,\d]/g, '').match(/^\d+(?:[.,]\d{0,2})?|^\d+/)[0]

Но он пропускает числа вида 1.x и 1,x, т.е где есть точка или запятая, но отсутствует дробная часть.

Буду очень благодарен если поможете пофиксить этот баг.


Ответы (1 шт):

Автор решения: Vasily

Вы можете поступить следующим образом:

const processedValue = value
   .replace(/^\D/, "")
   .replace(/[^.,\d]/g, "")
   .replace(/\.,$/, "")
   .match(/^\d+(?:[.,]\d{0,2})?|^\d+/)[0]
→ Ссылка