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


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.