Регулярное выражение позволяет вводить цифры и одну точку

Каким будет регулярное выражение для ввода цифр и точки? Относительно этого \D допускаются только цифры, но он не допускает точки, мне нужно, чтобы цифры и одна точка, это значение как float. Мне нужно быть действительным при выполнении keyup в jQuery, но все, что мне нужно, это регулярное выражение, которое разрешает только то, что мне нужно.

Это будет встроено в функцию JavaScript replace для удаления нецифровых символов и других символов (кроме точки).

Приветствия.

Ответ 1

Если вы хотите разрешить 1 и 1.2:

(?<=^| )\d+(\.\d+)?(?=$| )

Если вы хотите разрешить 1, 1.2 и .1:

(?<=^| )\d+(\.\d+)?(?=$| )|(?<=^| )\.\d+(?=$| )

Если вы хотите разрешить только 1.2 (только плавает):

(?<=^| )\d+\.\d+(?=$| )

\d позволяет цифры (в то время как \d позволяет что угодно, кроме цифр).

(?<=^| ) проверяет, что этому номеру предшествует либо пробел, либо начало строки. (?=$| ) гарантирует, что за строкой следует пробел или конец строки. Это гарантирует, что число не является частью другого числа или в середине слов или чего-то еще.

Изменить: добавлено больше опций, улучшено регулярное выражение, добавив lookahead- и backs для обеспечения того, чтобы номера были автономными (т.е. не находились в середине слов или других номеров.

Ответ 2

\d*\.\d*

Объяснение:

\ d * - любое количество цифр

\. - точка

\ d * - больше цифр.

Это будет соответствовать 123.456, .123, 123., но не 123

Если вы хотите, чтобы точка была необязательной, на большинстве языков (не знаю о jquery) вы можете использовать

\d*\.?\d*

Ответ 3

Моя попытка - это комбинированное решение.

string = string.replace(',', '.').replace(/[^\d\.]/g, "").replace(/\./, "x").replace(/\./g, "").replace(/x/, ".");
string = Math.round( parseFloat(string) * 100) / 100;

Решение первой строки отсюда: регулярное выражение, заменяющее несколько периодов плавающим числом. Он заменяет запятую "," точкой "."; Заменяет первую запятую на x; Удаляет все точки и заменяет x на точку.

Вторая строка очищает цифры после точки.

Ответ 4

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

boxValue = boxValue.replace(/[^0-9\.]/g,"");

Это регулярное выражение будет содержать только цифры и точки в текстовом поле.

Ответ 5

Попробуйте следующее выражение

/^\d{0,2}(\.\d{1,2})?$/.test()