@sashavol

Валидация дробного числа, replace в js?

Привет!
if (this.value.match(/[^0-9\.]/g)) {
			this.value = this.value.replace(/[^0-9\.]/g, '');
		}

Вот такая конструкция мне не дает ввести буквы и все что угодно кроме цифр и точек.

А нужно сделать так чтобы точка была всего одна, за минуту нашел самый подходящий вариант
/^-?\d+(?:\.\d+)?$/g
По match заходит только по нужной мне конструкции, но реплейс мне по логике стирает регулярку с этой конструкцией, остальное нет.
Не улавливаю логику, как сделать replace так чтобы он удалял все кроме регулярки.
  • Вопрос задан
  • 2242 просмотра
Решения вопроса 1
@sashavol Автор вопроса
this.value = this.value.replace(/[^\d.]*/g, '')
	                     .replace(/([.])[.]+/g, '$1')
	                     .replace(/^[^\d]*(\d+([.]\d{0,5})?).*$/g, '$1');

Такое решение подошло для десятичных чисел
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
alsopub
@alsopub
Конкретно это (в вопросе) регулярное выражение проверяет чтобы в переменной было только число и ничего лишнего, то есть заменять тут ничего не надо. Если надо фильтровать, то что-то типа этого:
var s = 'some text -1.2 more text';
console.log(parseFloat(s.replace(/^.*?(-?\d+(?:\.\d+)?).*?$/, '$1')));
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы