Регулярное выражение для замены всего, кроме чисел и десятичной точки


113

У меня есть текстовое поле, которое должно оставаться только текстовым или десятичным. Вот код, который я сейчас использую для замены всего, кроме чисел и десятичной точки. Проблема в том, что я не могу понять регулярное выражение, которое идентифицирует все остальное.

document.getElementById(target).value = newVal.replace(/\D[^\.]/g, "");

\ D работает нормально, но я пробовал (?!.), (?!\.), [^.], [^\.]и так далее ...

Есть ли предложения по регулярному выражению, которое положительно идентифицирует с чем-либо, кроме числа или десятичной дроби?

Спасибо за помощь


если вы хотите проверить фактические числа, а не числовые цифры: stackoverflow.com/questions/42328875/…
— cregox

Ответы:


239

Использовать это:

document.getElementById(target).value = newVal.replace(/[^0-9.]/g, "");

1
@Hugo это ничего не позволяет, вам просто не следует передавать строку, которая потенциально может содержать больше десятичных знаков, и предварительно ее обработать. Это все равно что сказать, что строка допускает каждый символ ...
— jave.web 03

3
Затем прогоните возвращаемое значение через parseFloat. Это удалит дополнительные десятичные точки. напримерparseFloat("46554.4655465.54654.545345.5") = 46554.4655465
— Саймон

1
Это замечательно для преобразования уже отформатированных чисел, таких как деньги, в вычислимое число с плавающей запятой.
— lu1s

8

Удалить только десятичную часть можно следующим образом:

number.replace(/(\.\d+)+/,'');

Это преобразует 13,6667 пикселей в 13 пикселей (без изменения единиц пикселей).


7

Попробуй это:

document.getElementById(target).value = newVal.replace(/^\d+(\.\d{0,2})?$/, "");


2
лучший ответ. Удаляет 0,000 10,000000 .22 2,234, но сохраняет 1, 10, 10,1, 10,22
— Роберт Бейкер

Это выражение выглядит сложным, не могли бы вы объяснить, как оно работает или что именно оно удалит?
— Миндеров

Это не работает с вводом кириллицы, например "5,12 руб."
— Миндеров

4
"11111" .replace (/ ^ \ d + (\. \ D {0,2})? $ /, "") - результат пустая строка
— yAnTar 07

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.